如何更新MongoDB中的嵌入字段

时间:2016-01-18 15:25:07

标签: mongodb nosql

我有一个MongoDB文档,我想更新数组中的特定字段,例如,经销商> dealer3>特定对象_id的值为1。我该如何更新该字段?

我的文档如下所示:

{
        "_id" : "CARS1P01182016A0018789",
        "name" : "Acme Company",
        "dealers" : {
                "dealer1" : {
                        "units" : 1200,
                        "n" : 50,
                        "rating" : 0.05
                },
                "dealer2" : {
                        "n" : 20,
                        "rating" : 0
                },
                "dealer3" : {
                        "n" : 100,
                        "rating" : 0
                }
        },
        "status" : "active"
}

4 个答案:

答案 0 :(得分:2)

使用dot notation指定更新中的嵌入式文档路径,以及 $set 运算符,如下所示:

db.collection.update(
    { "_id": "CARS1P01182016A0018789" },
    {
        "$set": {
            "dealers.dealer3.rating": 1
        }
    }
)

答案 1 :(得分:0)

解决了它,只是输了一个错误,我正在做一个db.test.find而不是db.test.update。

db.test.update({_ id:" CARS1P01182016A0018789"},{$ set:{" dealers.dealer3.rating":1}});

答案 2 :(得分:0)

您可以使用常规$inc运算符并使用点符号嵌套文档

db.collection.update (
         {_id: 'CARS1P01182016A0018789'}, 
         {'$inc':{"dealer.dealer3.rating" : 1} }
);

答案 3 :(得分:0)

使用$inc运算符和点表示法更新字段,$inc运算符将增加字段的值。 $set只会将值设置为固定值。

db.collection.update({"_id": "CARS1P01182016A0018789"},{$inc:{"dealer.dealer3.rating":1}})