0
{
"_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收集中。在这里,我将如何将字段从 4 设置valuekolaBazar5?

4

2 回答 2

5

查询将按要求更新: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)}})

于 2014-07-23T20:12:22.467 回答
0

只是把它们当作'dot.separated.nested.properties'

所以{$set: {'bazar.kolaBazar': 5}}在你的情况下

于 2014-07-23T20:09:01.330 回答