2011-08-03 16 views
15

Mam kolekcję z następującymi danymi:MongoDB usunąć dokument podrzędny z dokumentu

{ 

    "_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 
} 

Może ktoś sugerują, jak usunąć dokument podrzędny z „r” klucz posiadającej tylko id dokument podrzędny, mam zamiar del ?

na przykład chcę del na dokument podrzędny z id 4e39519d5e746bc00f000000 Więc ten dokument podrzędny powinien zostać usunięty

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

Odpowiedz

22

To proste, wystarczy użyć $pull operatora:

db.items.update({}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false) 
Powiązane problemy