2016-06-21 5 views
0

Mon schéma a une propriété tableau. Je veux modifier la propriété de tableau de chaque document. Par exemple, supprimez certains éléments de tableau. Quel est le meilleur moyen d'obtenir une telle fonctionnalité?Mongoose met à jour tous les documents

Exemple: Le schéma utilisateur a une propriété de tableau avec des noms de livre. À un moment donné, je veux supprimer certains noms de livres de chaque utilisateur. Je veux réaliser sans fonctionnalité pour chaque utilisateur.

user.books = _.without(user.books, "SomeBookName1", "SomeBookName2", "SomeBookName3") //Underscore style:) 
+0

J'ai trouvé des réponses sur des questions similaires: [link] (http://stackoverflow.com/questions/26689132/update-multiple-documents-by-providing-documents-in-body-mongoose-mongodb) Mais ils codent en dur la valeur de la propriété. Dans ma situation, cette propriété sera différente. –

+0

Utilisez les opérateurs de mise à jour atomique dans la mesure du possible: https://docs.mongodb.com/manual/reference/operator/update/#array. Mais votre question est trop large; pouvez-vous l'éditer pour montrer une mise à jour spécifique que vous essayez de faire? – JohnnyHK

+0

@JohnnyHK j'ai mis à jour la question) –

Répondre

2

Merci @JohnnyHK pour l'aide. $pull fonction de la documentation m'a aidé.

Model.update = function ({}, {$pull : {books: "someBookName" } }, {multi: true}, function(err) { //callback }); 

Ou pour supprimer plusieurs éléments, il y a $pullAll.

$pullAll: {books: ["someBookName1", "someBookName2"]}