2014-06-12 35 views
2

我想要的值插入到子文件的數組的數組,如果值是不是已經.......我有這樣的如何在MongoDB中查找並插入子文檔數組列表中?

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

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

集合現在我想在Friends組找到一個值如果該值不存在並且應該插入。

回答

2

你想要的$addToSet操作:

db.groups.update(
    { "userName": "krishna", "groups.groupName": "Friends" }, 
    { 
     "$addToSet": { "groups.$.groupMembers": "jack" } 
    } 
) 
也使用相同的 positional $運營商所需的數組元素匹配

,您使用$addToSet將「推」的元素到數組,如果它不存在。如果確實存在,則不執行更新。

+0

@Nill Lunn,我在代碼示例中收到以下錯誤:無效修飾符指定$ addToset' – Mulagala

+0

@Mulagala Typo。它在其他地方被正確輸入。 –

+0

@Nill Lunn,我們可以計算匹配的文檔,因爲當列表中有相同的成員時我需要警告,因爲我可能在刪除不在列表中的成員時遇到問題。首先,我需要在列表中找到一個成員 – Mulagala

相關問題