You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule4 Anypoint Studio中MongoDB Find Documents组件如何查询大于指定日期

解决Mule 4 MongoDB Find Documents组件日期查询问题

问题原因

你写的表达式存在两个核心问题:

  1. DataWeave中$是保留字符,直接写$gt会触发语法错误
  2. ISODate是MongoDB Shell专属语法,并非DataWeave的日期构造方式

正确实现方式

方法1:DataWeave原生构造兼容查询对象

用DataWeave的日期语法生成日期,同时用引号包裹MongoDB操作符:

#[output application/json ---
{
  "date": {
    "$gt": |2015-01-01T00:00:00Z| as DateTime {format: "yyyy-MM-dd'T'HH:mm:ss'Z'"}
  }
}
]

方法2:通过Java调用构造MongoDB日期

调用MongoDB的Java日期类来构造查询条件:

#[output application/json ---
{
  "date": {
    "$gt": java('org.bson.types.DateTime', |2015-01-01| as Date)
  }
}
]

方法3:简化字符串转日期写法

DataWeave支持直接将ISO格式字符串转为日期类型,MongoDB会自动识别:

#[output application/json ---
{
  "date": {
    "$gt": "2015-01-01" as Date
  }
}
]

注意事项

  • 确保MongoDB集合的date字段存储为日期类型,而非字符串,否则比较逻辑会失效
  • 所有MongoDB操作符(如$gt、$lt)在DataWeave中必须用双引号包裹,避免被解析为DataWeave语法元素

内容的提问来源于stack exchange,提问作者MisterNeedHelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:43:12