2011-08-03 116 views
15

Tengo una colección con un siguientes datos:mongodb eliminar subdocumento del documento

{ 

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

¿Puede alguien sugerir cómo quitar un subdocumento de una 'r' llave tener solamente Identificación del subdocumento, voy a Del ?

por ejemplo quiero del un subdocumento con id 4e39519d5e746bc00f000000 Así que este subdocumento debería suprimirse

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

Respuesta

22

Es fácil, sólo tiene que utilizar $pull operador:

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