假设我们有以下收藏,对此我有几个疑问:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"total" : 100,
"items" : [
{
"item_name" : "my_item_one",
"price" : 20
},
{
"item_name" : "my_item_two",
"price" : 50
},
{
"item_name" : "my_item_three",
"price" : 30
}
]
}
1-我想增加“ item_name”:“ my_item_two”的价格,如果不存在,则应将其附加到“ items”数组中。
2-如何同时更新两个字段。例如,增加“ my_item_three”的价格,同时增加“ total”(具有相同的值)。
我更喜欢在MongoDB上执行此操作,否则,我必须在客户端(Python)中加载文档并构造更新的文档,并用MongoDB中的现有文档替换它。
更新 这是我尝试过的并且如果对象存在则可以正常工作:
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
但是,如果密钥不存在,则不会执行任何操作。同样,它仅更新嵌套对象。此命令也无法更新“总计”字段。