如何在MongoDB中查找并插入子文档数组列表?

时间:2014-06-12 08:22:02

标签: mongodb mongodb-query

当值不存在时,我想在子文档的数组中向数组插入一个值。我有一个像这样的集合

{
"_id" : ObjectId("53993f67ccbc960c7d05b74f"),
"groups" : [
    {
        "groupName" : "Default",
        "groupMembers" : [ ]
    },

    {
        "groupMembers" : [ ],
        "groupName" : "Family"
    },
    {
        "groupName" : "Friends",
        "groupMembers" : ["jack" ]
    }
],
"userName" : "krishna",
}

现在我想在Friends组中找到一个值,如果值不存在则应该插入。

1 个答案:

答案 0 :(得分:2)

您想要$addToSet运算符:

db.groups.update(
    { "userName": "krishna", "groups.groupName": "Friends" },
    {
        "$addToSet": { "groups.$.groupMembers": "jack" }
    }
)

同样使用相同的positional $运算符来匹配所需的数组元素,使用$addToSet,如果元素不存在,它会将元素“推”到数组上。如果确实存在,则表示没有更新。