这是我所拥有的示例订购文件
{numberOfHours: 10, status: “BOOKED”, hidden: true},
{numberOfHours: 5, status: “NOT_BOOKED”,hidden: true},
{numberOfHours: 1, status: “BOOKED”, hidden: true},
{numberOfHours: 10, status: “PENDING”, hidden: true}
这是我的要求。我想找到所有不是hidden(hidden = false)
的东西。但是,如果状态为“BOOKED”
,即使hidden
为true
,它也应显示。我也必须使用collection.find()
这是我的查询-
{ $expr: {
$eq:[ {
$cond: {
if: { "$status" : { $ne: "BOOKED"} },
then: {"$hidden"},
else: {null}
}
},
false ] }
}
如何从这里继续?任何帮助将不胜感激。
答案 0 :(得分:1)
您可以只使用$or来表达两个条件:
{ $expr: {
$or: [ { $eq: [ "$status", "BOOKED" ] }, { $eq: [ "$hidden", false ] } ]
}
(如果状态不同于BOOKED
,则它会检查是否将隐藏设置为false
)
答案 1 :(得分:0)
{$expr: {
{$cond: {
"if": {"$eq": ["$status", "BOOKED"]},
"then": {"$hidden"},
"else": {null}
}
},false}
}
注意:-我根据您的问题给出了答案。 希望对您有帮助。