2010-12-14 83 views
9

Est-il possible de faire une mise à jour en vrac/upsert (ne pas insérer) dans MongoDB?Mise à jour en vrac/upsert dans MongoDB?

Si oui, veuillez me diriger vers des documents liés à cela?

Merci

+0

Ce n'est pas encore possible: voir https://jira.mongodb.org/browse/SERVER-4004 –

Répondre

4

Vous pouvez utiliser le programme de ligne de commande mongoimport il devrait être dans votre bac MongoDB dir ...

Il y a deux options que vous aurez envie de regarder dans d'utiliser upsert ...

insert --upsert ou objets de mise à jour qui existent déjà
--upsertFields arg comm champs séparés par des champs pour la requête partie du upsert. Vous devez vous assurer que cela est indexé

Plus d'infos ici: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Ou tout simplement faire ...

$ mongoimport --help 
+0

Note: actuellement --upsert n'est pas documenté dans les docs en ligne (ils doivent être mis à jour) ... mais vous le verrez à partir de la ligne de commande --help. –

1

mises à jour en vrac peuvent également être effectués par lots que l'on trouve dans la documentation:

MongoDB Bulk Methods

Je les utilise pour importer des fichiers CSV que je besoin de masser un peu avant d'importer les données. C'est un peu lent lorsqu'il s'agit de mises à jour, mais il a fait mes mises à jour de documents 50K en environ 83 secondes, ce qui est beaucoup plus lent que la commande mongoimport.

1

mongo peut exécuter le fichier .js. vous pouvez appuyer sur toutes les commandes de mise à jour dans un fichier js.

t.js

db.record.update({md5:"a35f10a8339ab678612d1f86be08b81a"},{$set:{algres:[]}},false,true); 
db.record.update({md5:"a35f10a8339ab678612d1f86be08b81b"},{$set:{algres:[]}},false,true); 

puis, mongo 127.0.0.1/test t.js