2011-08-29 32 views
18

Por ejemplo, tengo un documentoCómo eliminar elemento enésimo de la matriz en mongodb

db.test.save({_id: 1, list:[ 
    {key: "a"}, 
    {key: "b"}, 
    {key: "c"}, 
    {key: "d"}, 
    {key: "e"} 
]}) 

y necesito quitar segundo elemento de la lista. Por ahora lo hago en dos pasos. Primero de todo lo que no se ha establecido segundo elemento de la lista pero el operador desarmado no retire elemento, que va a ser nula, después de eso me tire cualquier valor anulable del campo de lista

db.test.update({_id: 1}, {$unset: {"list.2": 1}}) 
db.test.update({_id: 1}, {$pull: {list: null}}) 

quiero preguntar si hay solución de hacer que en una sola operación?

Respuesta

3

si se conoce el valor que desea eliminar

db.test.update({{_id: 1},{"$pull" : {"list" : { "key" : "c"}}},false,false) 

más información en

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray

+0

¿Es posible usar esto con 'findAndModify' donde el ID del documento y la existencia del elemento de matriz se utilizan como argumentos de consulta? – raffian

+0

¿Por qué usas ¿"falso, falso"? ¡Gracias! ¡muy útil! –

Cuestiones relacionadas