Mongo db update语句

时间:2016-04-29 15:00:17

标签: mongodb insert-update

我有简单的文件:

import

无法弄清楚如何编写更新语句以将地址信息 /* 1 */ { "_id" : "9cbfceec-d6f6-5638-b7c9-49103dc39665", "Settings" : [ [ "Storage", "Dedicated" ], [ "Country", "EE" ], [ "Address", "http://localhost:55557" ], [ "Number", "05" ] ] } 更新为IP地址。像"http://localhost:55557"这样的东西

2 个答案:

答案 0 :(得分:3)

架构设计不正确,因为您没有要更新的值的键。请考虑按以下方式更改架构

{
_id : "9cbfceec-d6f6-5638-b7c9-49103dc39665",
settings : 
    {  
        storage:"Dedicated", 
        country:"EE",
        address:"http://localhost:55557",
        number:"05"
    }
}

上面的模式对于设置中的每个值都有关键,而不是具有双数组。在上述文档中可以访问和编辑任何值。

然后您可以按如下方式更新文档

db.settings.update({
  _id: "9cbfceec-d6f6-5638-b7c9-49103dc39665"
}, {
  $set: {
    "settings.address": "http://10.10.20.2:66667"
  }
});

答案 1 :(得分:0)

chirdam关于架构是正确的。

如果您没有制定新架构的规定,可以尝试以下方法:

尝试此查询:

db.yourCollection.update({"_id" : "9cbfceec-d6f6-5638-b7c9-49103dc39665", "Settings.Address" : "http://localhost:55557"} , { $set : {"Settings.$.Address" : "http://10.10.20.2:66667"}});

或者替代方法是使用RoboMongo手动编辑您的收藏