我的文档中具有以下结构:
{
"_id": 11111,
"user": "[email protected]",
"sites": [
{
"sitename": "site1",
"url": "site2.com",
"keywords": [],
},
{
"sitename": "site2",
"url": "site2.com",
"keywords": [],
},
{
"sitename": "site2",
"url": "site2.com",
"keywords": [],
},
]
},{
"_id": 2222,
"user": "[email protected]",
"sites": []
}
我将通过ID(id:11111)查找该文档。有多个文档。然后,我想向包含1111 _id的文档中的站点数组添加新站点。如果站点名称已经存在,则不应添加该站点。我该如何实现?
最佳答案
更新的答案:
您可以检查_id
是否为'11111',然后检查sitename
不存在并且不等于新的站点名称。然后,您可以将嵌入的文档$push
放入数组中。
db.collection.update(
{
_id:11111,
'sites.sitename' : {$exists:false},
'sites.sitename' : {$ne:'site4'}
},
{
$push:
{
'sites':
{
"sitename": "site4",
"url": "site4.com",
"keywords": []
}
}
},
{
multi:true
}
)