Für die Produktionssicherung empfiehlt MongoDB aus Gründen der Datengenauigkeit Mongodump anstelle von Mongoexport . Ich müsste jedoch Daten aus einer MongoDB-Datenbank "scrubben", bevor ich sie sichern kann. Mir sind keine anderen serverseitigen Datenbereinigungsoptionen als mongoexport bekannt . Zwei Fragen:
- Ist mongoexport Zugriff MongoDB Cache in RAM? Würde es den Arbeitssatz im RAM ändern, wie es Mongodump tut?
- Der Befehl mongodump verfügt über diese Option --query . "Stellt ein JSON-Dokument als Abfrage bereit, die optional die in der Ausgabe von mongodump enthaltenen Dokumente einschränkt." Ist eine Abfrage erforderlich, um bestimmte Felder in einem Dokument auszuschließen?
mongodump
oder Dateisystem-Snapshot-Sicherung durchführen oder einen benutzerdefinierten Export schreiben können, wenn Siemongoexport
nicht das tun, was Sie benötigen. Alle Tools oder Programme, aus denen Daten gelesen werden,mongod
können Ihren Arbeitssatz ändern, wenn Ihre zu exportierenden Daten größer sind als der verfügbare RAM. Dateisystem-Snapshots sind weniger störendAntworten:
Als Antwort auf Ihre erste Frage durchsuchen beide Tools (standardmäßig) nur den
_id
Index, um die Daten abzurufen und dann auf die Festplatte zu schreiben. Ja, beide Tools wirken sich in ähnlicher Weise auf Ihren Arbeitssatz aus. Daher würde ich generell empfehlen, sie auf einer sekundären (wenn möglich vorzugsweise einer versteckten sekundären) auszuführen. Ich werde Stennie in den Kommentaren hier wiederholen und andere Sicherungsmethoden empfehlen, wenn Sie mit großen Datenmengen arbeiten.Bei der zweiten Frage gehe ich davon aus, dass Sie nach einem
mongodump
Äquivalent der--fields
Option suchen, ummongoexport
nur bestimmte Felder auszugeben. Die Abfrageoption kann zum Filtern von Ergebnissen verwendet werden, kann jedoch nicht mit einer Projektion verwendet werden (um die zurückgegebenen Felder auszuwählen). Dies ist eine Funktionsanforderung, die in TOOLS-28 verfolgt wird, aber noch nicht geplant ist. Wie Stennie auch erwähnte, besteht die andere Möglichkeit darin, einen benutzerdefinierten Exporter zu schreiben, der Ihren Anforderungen entspricht (und ich würde weiterhin empfehlen, ihn gegen eine sekundäre Version auszuführen, um Ihren Arbeitssatz zu schützen).quelle
(Entschuldigung, keine Ahnung)
--query wählt ganze Dokumente aus oder schließt sie aus, keine Felder.
Es wäre jedoch eine gute Idee:
quelle
Mongoexport behält zwar Typen bei, macht die Daten jedoch inkonsistent. Wenn Sie ein Feld mit Ints und Longs exportieren, wird es als Numbers- bzw. JSON-Objekt exportiert, was es später schwieriger machen kann.
"Strenger Modus. Strenge Modusdarstellungen von BSON-Typen entsprechen dem JSON-RFC. Jeder JSON-Parser kann diese strengen Modusdarstellungen als Schlüssel / Wert-Paare analysieren. Allerdings erkennt nur der interne MongoDB-JSON-Parser die vom Format übermittelten Typinformationen."
https://docs.mongodb.com/manual/reference/mongodb-extended-json/
quelle