2014-06-12 3 views
2

Je veux insérer une valeur au tableau dans le tableau du document sous lorsque la valeur est pas déjà there.I ont une collection comme cetteComment trouver et insérer dans une liste de sous-document dans MongoDB?

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

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

Maintenant, je veux trouver une valeur dans Friends groupe et si la valeur n'est pas là et qu'elle devrait être insérée.

Répondre

2

Vous voulez l'opérateur $addToSet:

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

en utilisant également la même chose pour correspondre à l'élément de tableau requis opérateur positional $, vous utilisez $addToSet qui va « pousser » l'élément sur le tableau si elle n'existe pas. Si cela existe, aucune mise à jour n'est effectuée.

+0

@Nill Lunn, j'obtiens l'erreur suivante 'Modificateur invalide spécifié $ addToset' – Mulagala

+0

@Mulagala Typo dans l'exemple de code. Il a été tapé correctement partout ailleurs. –

+0

@Nill Lunn, pouvons-nous compter les documents correspondants, car je dois avertir quand il y a déjà un même membre dans la liste, Parce que je peux rencontrer un problème lors de la suppression d'un membre non list.So d'abord je dois trouver un membre dans la liste – Mulagala

Questions connexes