如何在MongoDB中更新文档内的文档?

时间:2014-07-23 19:57:05

标签: mongodb mongo-shell

{
"_id" : O5,
"bazar" : {
    "indiraBazar" : {
        "units" : "taka",
        "no" : 560,
        "value" : 0.90
    },
    "dhakaBazar" : {
        "no" : "no item",
        "value" : 1
    },
    "kolaBazar" : {
        "no" : "unlimited",
        "value" : 4
    }
},
"vat" : false,
"total" : 2

}

说上面的文件在bazars集合下。在这里,我如何将value的{​​{1}}从4提交到5?

2 个答案:

答案 0 :(得分:3)

查询将按要求更新:db.bazars.update({'bazar.kolaBazar.value': 4}, {$set: {'bazar.kolaBazar.value':NumberInt(5)}})

编辑:该查询也有效:db.bazars.update({'id': 06}, {$set: {'bazar.kolaBazar.value':NumberInt(5)}})

但我会更改架构以简化您的查询。

{
    "_id" : "O6",
    "bazar" : [ 
        {
            "_id" : "indiraBazar",
            "units" : "taka",
            "no" : 560,
            "value" : 0.9
        }, 
        {
            "_id" : "dhakaBazar",
            "no" : "no item",
            "value" : 1
        }, 
        {
            "_id" : "kolaBazar",
            "no" : "unlimited",
            "value" : 4
        }
    ],
    "vat" : false,
    "total" : 2
}

新查询为db.bazars.update({'bazar._id':'kolaBazar'}, {$set:{'bazar.$.value':NumberInt(5)}})

答案 1 :(得分:0)

只需将其视为'dot.separated.nested.properties'

即可

所以你的案例中会{$set: {'bazar.kolaBazar': 5}}