如何在MongoDB中更新子文档字段值?

时间:2014-06-12 05:18:01

标签: mongodb

我有像mongodb这样的集合

{
"_id" : ObjectId("5396d07eccbc961622e55309"),
"userName" : "mulagala",
"groups" : [
    {
        "groupName" : "Default",
        "groupMembers" : [ ]
    },
    {
        "groupName" : "Family",
        "groupMembers" : [ ]
    }
  ],

}

我想将groupName Family更改为Friends。我尝试过如下

db.groups.update({ "userName" : 'mulagala' },{ "$rename": {"groups": {"groupName.Family" : 'groupName.Friends'}}})

我收到此错误

$rename target must be a string

1 个答案:

答案 0 :(得分:1)

这不是字段名称,而是"值"一个领域。您可以使用positional $运算符和$set

进行更新
db.groups.update(
    { "userName": "mulagala", "groups.groupName": "Family" },
    {
        "$set": { "groups.$.groupName": "Friends" }
    }
)

因此,您匹配数组所需的元素,并在$set下的更新部分中指定"位置"与$。那么你只需要设置"你想要的价值。