下面是一個檔案示例:
{
_id: ObjectId("740b850f0406011059002b14"),
product_id: 10,
product_state: "available",
old_state: null,
...
};
我正在嘗試進行更新,將狀態值存盤在名為“old_state”的欄位中,并將新值放入“product_state”欄位中。我想對多個檔案應用此操作。那么,我怎樣才能做到這一點呢?結果應該是這樣的:
{
_id: ObjectId("740b850f0406011059002b14"),
product_id: 10,
product_state: "outOfStock",
old_state: "available",
...
};
uj5u.com熱心網友回復:
您只需要將帶$前綴的密鑰名稱參考到要更新的新密鑰
注意:這適用于 MongoDB 版本 >= 4.2
db.collection.update({
product_id: 10,
}, [
{
"$set": {
"product_state": "outOfStock",
"old_state": "$product_state" // <-- Updates `old_state` key with the current value in `product_state` key
}
}
])
注意
$前綴 inproduct_state和更新塊包含在[]
這將更新product_state鍵到old_state鍵的當前值
Mongo Playground 示例執行
uj5u.com熱心網友回復:
您需要使用較新的陣列形式$update:
c = db.foo.update({_id:0}, [ {$addFields: {product_state: "new", os: "$product_state"}} ]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/367647.html
