2011-08-03 7 views
15

J'ai une collection avec les données suivantes:MongoDB supprimer sous-document du document

{ 

    "_id" : ObjectId("4e3951905e746b3805000000"), 
    "m" : "hello", 
    "r" : [{ 
     "_id" : ObjectId("4e3951965e746b8007000000"), 
     "u" : 3, 
     "m" : "response1" 
    }, { 
     "_id" : ObjectId("4e39519d5e746bc00f000000"), 
     "u" : 3, 
     "m" : "response2" 
    }, { 
     "_id" : ObjectId("4e3953dc5e746b5c07000000"), 
     "u" : 3, 
     "m" : "response3" 
    }, { 
     "_id" : ObjectId("4e3953ea5e746bd40f000001"), 
     "u" : 3, 
     "m" : "response" 
    }], 
    "u" : 3, 
    "w" : 3 
} 
{ 
    "_id" : ObjectId("4e3952c75e746bd807000001"), 
    "m" : "asdfa", 
    "r" : [{ 
     "_id" : ObjectId("4e39544e5e746bc00f000001"), 
     "u" : 3, 
     "m" : "response5" 
    }], 
    "u" : 3, 
    "w" : 3 
} 

Quelqu'un peut-il suggérer comment supprimer un sous-document d'un « r » clé ayant seulement id de sous-document, je vais del ?

par exemple je veux del un sous-document avec identifiant 4e39519d5e746bc00f000000 donc cette sous-document devrait être supprimé

{ 
    "_id" : ObjectId("4e39519d5e746bc00f000000"), 
    "u" : 3, 
    "m" : "response2" 
}, 

Répondre

22

Il est facile, il vous suffit d'utiliser $pull opérateur:

db.items.update({}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false) 
Questions connexes