55 votes

MongoDB : mises à jour inconditionnelles ?

Cela semble être une question stupide mais je n'ai pas encore trouvé la réponse. Si je voulais simplement ajouter le même champ->valeur à CHAQUE enregistrement d'une collection MongoDB, quelle serait la commande shell appropriée pour le faire ? J'ai essayé de faire une mise à jour multiple avec une requête vide ({}), mais cela a donné lieu à cette erreur :

la mise à jour multiple ne fonctionne qu'avec les opérateurs $.

Je suis un peu perplexe quant à la façon de contourner ce problème. Avez-vous des suggestions ?

110voto

Cameron Points 32208

L'erreur dit tout : vous ne pouvez modifier plusieurs documents qu'en utilisant la fonction $ opérateurs de modification . Vous avez probablement eu quelque chose comme ça :

> db.coll.update({ }, { a: 'b' }, false, true);

Ce qui devrait normalement remplacer le premier objet de la collection avec { a: 'b' } si multi était fausse. Vous ne voudriez pas remplacer tous les objets de votre collection par le même document !

Utilisez le $set opérateur à la place :

> db.coll.update({ }, { '$set': { a: 'b' } }, false, true);

Cela permettra de définir le a de chaque document (en la créant si nécessaire) pour 'b' .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X