没有任何其他解决方案..
findOneAndUpdate( {"_id": ObjectId("5714ce0a4514ef3ef68677fd")}, $cond: { if: { $eq: [ "$isRequired", true ] }, then: { "status": "Done" }, else: { { "status": "Approved" } } )
相同的集合状态更新基于 isRequire 是 true 或 false。
答案 0 :(得分:1)
首先是您的查询语法错误,您在查询对象之后缺少 {}
。
更新查询由:update({query}, {update})
组成,您写的是:update( {query}, update)
。
此外,您不能在更新查询中使用 $cond
,因为它是一个聚合阶段,但自 Mongo 4.2 以来,mongo 允许聚合阶段 (reference),因此您可以执行此查询:
db.collection.update({
"_id": "5714ce0a4514ef3ef68677fd"
},
[
{
"$set": {
"status": {
"$cond": {
if: {
$eq: [
"$isRequired",
true
]
},
then: "Done",
else: "Approved"
}
}
}
}
])