"safeguard": {
$arrayElemAt: [
"$join.safe_prevention",
0
]
},我在我的项目中有这个聚合,它可以工作,但是它返回true或null,我需要它返回true或false。
"safeguard": {
$not: {
$eq: [$arrayElemAt: [
"$join.safe_prevention",
0
]
: null]
}
},我已经尝试过了,但是它不起作用,因为$eq不接受函数作为它的第一个参数,那么如何才是正确的方法呢?
发布于 2022-07-19 15:11:52
问题不是很清楚,因为我不知道true是在哪里设置的,但是如果您想避免null,可以使用$ifNull
db.collection.aggregate([
{
$set: {
safeguard: {$ifNull: [{$arrayElemAt: ["$join.safe_prevention", 0]}, false]}
}
}
])看看它如何在操场实例上工作
如果您想获得true (如果有0项)和false (如果没有这样的项),您可以尝试:
db.collection.aggregate([
{$set: {
safeguard: {
$cond: [
{$eq: [
{$ifNull: [{$arrayElemAt: ["$join.safe_prevention", 0]}, false]},
false
]
}, false, true]
}
}
}
])看看它如何在操场示例布尔上工作
https://stackoverflow.com/questions/73039211
复制相似问题