2011-08-29 4 views
18

Par exemple, j'ai un documentComment supprimer l'élément n-ième du tableau dans MongoDB

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

et j'ai besoin retirer deuxième élément de la liste. Pour l'instant, je le fais en deux étapes. Tout d'abord, j'UNSET deuxième élément de la liste, mais l'opérateur unset élément enlever, il va être nulle, après que je tire une valeur nullable du champ de liste

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

Je veux demander s'il y a une solution faire que dans une seule opération?

Répondre

3

si vous connaissez la valeur que vous souhaitez supprimer

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

plus d'infos sur

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

+0

Est-il possible de l'utiliser avec 'findAndModify' où l'ID du document et l'existence de l'élément de tableau sont utilisés comme arguments de requête? – raffian

+0

Pourquoi utilisez-vous ¿"false, false"? Je vous remercie! très utile! –

Questions connexes