当值不存在时,我想在子文档的数组中向数组插入一个值。我有一个像这样的集合
{
"_id" : ObjectId("53993f67ccbc960c7d05b74f"),
"groups" : [
{
"groupName" : "Default",
"groupMembers" : [ ]
},
{
"groupMembers" : [ ],
"groupName" : "Family"
},
{
"groupName" : "Friends",
"groupMembers" : ["jack" ]
}
],
"userName" : "krishna",
}
现在我想在Friends
组中找到一个值,如果值不存在则应该插入。
答案 0 :(得分:2)
您想要$addToSet
运算符:
db.groups.update(
{ "userName": "krishna", "groups.groupName": "Friends" },
{
"$addToSet": { "groups.$.groupMembers": "jack" }
}
)
同样使用相同的positional $
运算符来匹配所需的数组元素,使用$addToSet
,如果元素不存在,它会将元素“推”到数组上。如果确实存在,则表示没有更新。