MongoDB如何用一个字段更新另一个字段?
How to use a field to update another field in MongoDB?
这是一个文档示例:
{
_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",
...
};
您只需将带有 $
前缀的密钥名称引用到您要使用
更新的新密钥
Note: This will work on MongoDB version >= 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
}
}
])
Notice the $
prefix in product_state
and the update block is enclosed in []
这会将 product_state
键的当前值更新为 old_state
键
您需要使用更新的数组形式 $update
:
c = db.foo.update({_id:0}, [ {$addFields: {product_state: "new", os: "$product_state"}} ]);
这是一个文档示例:
{
_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",
...
};
您只需将带有 $
前缀的密钥名称引用到您要使用
Note: This will work on MongoDB version >= 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
}
}
])
Notice the
$
prefix inproduct_state
and the update block is enclosed in[]
这会将 product_state
键的当前值更新为 old_state
键
您需要使用更新的数组形式 $update
:
c = db.foo.update({_id:0}, [ {$addFields: {product_state: "new", os: "$product_state"}} ]);