我有以下文件:
{
id: "myId",
boundedPlan: {
plannedWeeks: [
0 : {
weekStartDate: date
weekEndDate: date
plannedDays: []
},
...
]
},
unboundedPlan: {
plannedWeeks: [
0 : {
weekStartDate: date
weekEndDate: date
plannedDays: []
},
...
]
}
}这个计划代表了未来的几个星期。这个计划有一个有界或无界的计划。
(我在两个不同的字段上有相同的结构,因为在代码中,它们对应于两个行为不同的不同类)。
现在我必须执行以下查询。
“让当前的计划周确定一个日期”
我编写了以下管道:
[
{ "$match" : { "ownerId" : "defaultOwnerId"}},
{ "$project" : {
"boundedPlan" : 1,
"unboundedPlan" : 1,
"plannedWeeks" : {
"$cond" : {
"if" : { "$ne" : ["$boundedPlan", null]}, "then" : "$boundedPlan.plannedWeeks",
"else" : "$unboundedPlan.plannedWeeks"}
}
}
},
{ "$match" : {
"boundedPlan.plannedWeeks" : {
"$elemMatch" : { "weekStart" : { "$lte" : { "$date" : "2021-03-10T00:00:00Z"}}, "weekEnd" : { "$gte" : { "$date" : "2021-03-10T00:00:00Z"}}}},
"$or" : [{
"unboundedPlan.plannedWeeks" : {
"$elemMatch" : { "weekStart" : { "$lte" : { "$date" : "2021-03-10T00:00:00Z"}}, "weekEnd" : { "$gte" : { "$date" : "2021-03-10T00:00:00Z"}}}}
}]}
}
]问题如下:
"$match" : {
"unboundedPlan.plannedWeeks" : {
"$elemMatch" : { "weekStart" : { "$lte" : { "$date" : "2021-03-10T00:00:00Z"}}, "weekEnd" : { "$gte" : { "$date" : "2021-03-10T00:00:00Z"}}}},
}很管用。
当然,
我遗漏了什么东西吗?(使用spring数据mongo)
谢谢
发布于 2021-03-18 09:44:42
好吧,发现了..。我错误地使用了spring中的OrOperator类:
new Criteria("field1").orOperator(new Criteria("field2")) 与
new Criteria().orOperator(new Criteria("field1"), new Criteria("field2")https://stackoverflow.com/questions/66637733
复制相似问题