MongoDB-更新文档数组中的对象(嵌套更新)

MongoDB-更新文档数组中的对象(嵌套更新)

假设我们有以下集合,我对此几乎没有问题:

{
    "_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-我想提高“项目名称”的价格:“我的项目2”如果它不存在,它应该附加到“Item”数组中。

2-如何同时更新两个字段。例如,增加“my_tem_3”的价格,同时增加“总计”(具有相同的值)。

我更喜欢在MongoDB端这样做,否则我必须在客户端(Python)加载文档,并构造更新的文档并将其替换为MongoDB中的现有文档。

更新这就是我尝试过的,而且效果很好。如果对象存在 :

db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})

但如果钥匙不存在,它什么也做不了。此外,它只更新嵌套的对象。使用此命令也无法更新“总计”字段。


qq_笑_17
浏览 2255回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP