if else基于mongodb更新状态的条件



不工作的任何其他解决方案…

findOneAndUpdate( {"_id": ObjectId("5714ce0a4514ef3ef68677fd")}, $cond: { if: { $eq: [ "$isRequired", true ] }, then: { "status": "Done" }, else: { { "status": "Approved" } } )

基于isRequire的相同集合状态更新为真或假。

第一件事是你的查询有一个糟糕的语法,你缺少{}后的que查询对象。

一个更新查询由:update({query}, {update})组成,你写了:update( {query}, update)

同样,你不能使用$cond到一个更新查询,因为是一个聚合阶段,但自从Mongo 4.2, Mongo允许聚合阶段(参考),所以你可以做这个查询:

db.collection.update({
"_id": "5714ce0a4514ef3ef68677fd"
},
[
{
"$set": {
"status": {
"$cond": {
if: {
$eq: [
"$isRequired",
true
]
},
then: "Done",
else: "Approved"
}
}
}
}
])

这里是假值,这里是真值

最新更新