Mongo 数据库更新语句

Mongo db update statement

我有简单的文档:

 /* 1 */
{
    "_id" : "9cbfceec-d6f6-5638-b7c9-49103dc39665",
    "Settings" : [ 
        [ 
            "Storage", 
            "Dedicated"
        ], 
        [ 
            "Country", 
            "EE"
        ], 
        [ 
            "Address", 
            "http://localhost:55557"
        ], 
        [ 
            "Number", 
            "05"
        ]
    ]
}

不知道如何编写更新语句来将地址信息 "http://localhost:55557" 更新为 IP address.something,如 http://10.10.20.2:66667

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

{
_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"
  }
});

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 手动编辑您的 collection