我有这样的文件
{
"_id": ObjectId("626f942bb092f78afd9dad9d"),
"item_id": "external _id222",
"metadata": {
"item_name": "abc",
"quantity": 123,
"state": null
},
}
我想要做的是,$inc
即增加计数,quantity
然后更新state
SOLD,如果quantity
等于 124。我可以通过 2 个查询来做到这一点,更新quantity
,做一个 if-else 检查然后更新state
。有没有办法在一个查询中做到这一点update()
?(最好没有聚合)
使用 MongoDB v4.2+,您可以通过聚合管道进行一次更新来实现原子行为。用于$add
进行增量并$cond
检查数量 = 123
db.collection.update({
"item_id": "external _id222"
},
[
{
$set: {
"metadata.quantity": {
$add: [
"$metadata.quantity",
1
]
}
}
},
{
$set: {
"metadata.state": {
$cond: {
if: {
$eq: [
"$metadata.quantity",
124
]
},
then: "SOLID",
else: "$metadata.state"
}
}
}
}
],
{
multi: true
})
这是Mongo游乐场供您参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句