Mule4 Anypoint Studio中MongoDB Find Documents组件如何查询大于指定日期
解决Mule 4 MongoDB Find Documents组件日期查询问题
问题原因
你写的表达式存在两个核心问题:
- DataWeave中
$是保留字符,直接写$gt会触发语法错误 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
相关产品推荐
相关产品推荐

