2010-12-14 7 views
9

Ist es möglich, Bulk update/upsert (nicht einfügen) in MongoDB zu tun?Massenupdate/Upsert in MongoDB?

Wenn ja, bitte weisen Sie mich auf Dokumente zu diesem Thema?

Dank

+0

Diese noch nicht möglich ist: siehe https://jira.mongodb.org/browse/SERVER-4004 –

Antwort

4

können Sie das Programm Befehlszeile verwenden mongoimport es in Ihrem MongoDB Binärverezichnis sein sollte ...

Es gibt zwei Optionen, die Sie in aussehen wollen werden Upsert zu verwenden ...

--upsert Einsatz oder Aktualisierungsobjekte, die bereits existieren
--upsertFields arg comm a-getrennte Felder für die Abfrage Teil der upsert. Sie sollten sicherstellen, diese

indiziert ist

Mehr Infos hier: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Oder einfach tun ...

$ mongoimport --help 
+0

Hinweis: Derzeit --upsert ist nicht in den Online-Dokumenten dokumentiert (sie müssen aktualisiert werden) ... aber Sie werden es über die Befehlszeile --help sehen. –

1

Bulk-Updates können auch in Chargen durchgeführt werden, wie in der Dokumentation:

MongoDB Bulk Methods

Ich benutze diese um CSV-Dateien zu importieren, die ich vor dem Importieren der Daten ein wenig massieren. Es ist ein bisschen langsam im Umgang mit Updates, aber es hat meine 50K-Dokument-Updates in etwa 83 Sekunden, die weit langsamer als mongoimport Befehl ist.

1

Mongo kann .js Datei ausführen. Sie können alle Sie aktualisieren Befehle in einer js-Datei schieben.

t.js

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

dann, mongo 127.0.0.1/test t.js