我在聚合管道中有一个阶段,在这个阶段中,我过滤终止日期为null或不存在的数组元素。
{
"$project": {
"_id": 1,
"name": 1,
"versions": {
"$filter": {
"input": "$versions",
"as": "v",
"cond": {
"$lte": [
"$$v.terminationDate", null
]
}
}
}
}
}
这在Mongo shell中运行良好。MongoPlayGround
但是,我不知道如何在spring-data-mongodb中编写这些内容。
Aggregation.project()
.andInclude("name")
.and(Filter.filter("versions")
.as("v")
.by(ComparisonOperators.valueOf("$$v.terminationDate").lessThanEqualToValue(null)))
.as("versions");
但是,lessThanEqualToValue不接受空值。
请帮帮我。
1条答案
按热度按时间bcs8qyzn1#
我认为这是可行的。目标是使用$ifNull重新生成this query,这样您就可以尝试类似这样的操作:
更新了从评论到完美工作的小变化: