![](/img/trans.png)
[英]How to Update fields value in embedded documents of an Array in MongoDB using Java Driver
[英]Update Embedded Documents in array without Repeating in MongoDb using Java
我的文檔中具有以下結構:
{
"_id": 11111,
"user": "user@mail.com",
"sites": [
{
"sitename": "site1",
"url": "site2.com",
"keywords": [],
},
{
"sitename": "site2",
"url": "site2.com",
"keywords": [],
},
{
"sitename": "site2",
"url": "site2.com",
"keywords": [],
},
]
},{
"_id": 2222,
"user": "user2@mail.com",
"sites": []
}
我將通過ID(id:11111)查找該文檔。有多個文檔。 然后,我想向包含1111 _id的文檔中的站點數組添加新站點。 如果站點名稱已經存在,則不應添加該站點。 我該如何實現?
就像是
db.collection.update({_id:11111, 'sites.sitename' : {$exists:false}},
{$set : {'sites.$.sitename':'newsite.com'}},{multi:true})
編輯
如果要添加站點名稱的子文檔
var sub = {'a':'a','b':'b'};
db.collection.update({_id:11111, 'sites.sitename' : {$exists:false}},
{$set : {'sites.$.sitename':sub}},{multi:true})
更新的答案:
您可以檢查_id
為'11111',然后檢查該sitename
不存在並且不等於新的站點名稱。 然后,您可以$push
嵌入式文檔$push
到數組中。
db.collection.update(
{
_id:11111,
'sites.sitename' : {$exists:false},
'sites.sitename' : {$ne:'site4'}
},
{
$push:
{
'sites':
{
"sitename": "site4",
"url": "site4.com",
"keywords": []
}
}
},
{
multi:true
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.