So importieren Sie das .bson-Dateiformat auf mongodb

162

Ich habe die Datenbank mit dem mongodumpBefehl auf den Server exportiert und der Speicherauszug wird in einer .bsonDatei gespeichert . Ich muss das mit dem mongorestoreBefehl auf meinen lokalen Server importieren . Es funktioniert jedoch nicht. Was ist der richtige mongorestoreBefehl und was sind die anderen tools to restore db?

binalay
quelle

Antworten:

342

Es ist sehr einfach, eine .bson- Datei zu importieren :

mongorestore -d db_name -c collection_name /path/file.bson

Nur für eine einzelne Sammlung. Versuchen Sie Folgendes:

mongorestore --drop -d db_name -c collection_name /path/file.bson

Zum Wiederherstellen des vollständigen Ordners, der exportiert wurde von mongodump:

mongorestore -d db_name /path/
JERRY
quelle
4
Auch nützlich für die bson-Datei, die über exportiert wird, mongoexportwenn Sie nur einzelne Sammlungen exportieren. mongoimportgab mir "ungültige Zeichen" Fehler. Vielen Dank!
Zivilwürste
4
SyntaxError: fehlt; vor Anweisung @ (Shell): 1: 16
151291
3
Vielleicht können Sie hinzufügen, dass diese Befehle an der Eingabeaufforderung und nicht an der Mongo-Konsole ausgeführt werden sollen. Das würde neuen Benutzern helfen
Träume
2
Zu dieser Antwort hinzufügen. Für diejenigen, die eine bson-Datei remote wiederherstellen möchten. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper
1
Danke, es hat für meinen kompletten Ordner funktioniert, nachdem ich ihn von tar.gz
Braham Dev Yadav
63

mongorestore ist das Tool zum Importieren von Bson-Dateien, die von ausgegeben wurden mongodump .

Aus den Dokumenten :

mongorestore nimmt die Ausgabe von mongodump und stellt sie wieder her.

Beispiel:

# On the server run dump, it will create 2 files per collection
# in ./dump directory:
# ./dump/my-collection.bson
# ./dump/my-collection.metadata.json
mongodump -h 127.0.0.1 -d my-db -c my-collection

# Locally, copy this structure and run restore.
# All collections from ./dump directory are picked up.
scp user@server:~/dump/**/* ./
mongorestore -h 127.0.0.1 -d my-db
Cameron
quelle
Muss ich die dump/dbName/collectionName.bsonOrdnerstruktur beibehalten? Ich habe verwendet mongodump, aber jetzt möchte ich es mit mongorestoreeiner Remote-Linux-Box importieren .
Kevin Meredith
@ Kevin: Ich bin mir nicht sicher, um ehrlich zu sein, aber ich würde es annehmen. Verwenden Sie ein FTP-Programm, um die Dateien zusammen mit der Ordnerstruktur zu übertragen?
Cameron
5
Ich konnte eine Mongo-Datenbank erfolgreich mit einem Nicht-Dump-Ordnernamen importieren:mongorestore --collection people --db accounts myDump/accounts/people.bson
Kevin Meredith
35
bsondump collection.bson > collection.json

und dann

mongoimport -d <dbname> -c <collection> < collection.json
Anton Shutik
quelle
7
Beachten Sie die Warnung aus der Import-Export-Dokumentation von MongoDB :mongoimport and mongoexport do not reliably preserve all rich BSON data types because JSON can only represent a subset of the types supported by BSON. As a result, data exported or imported with these tools may lose some measure of fidelity.
LucasB
10

Führen Sie Folgendes über die Befehlszeile aus, und Sie sollten sich im Verzeichnis Mongo bin befinden.

mongorestore -d db_name -c collection_name path/file.bson

Puneet Goyal
quelle
9

Sie müssen diesen Mongorestore-Befehl über cmd und nicht über Mongo Shell ausführen ... Schauen Sie sich den folgenden Befehl an ...

Führen Sie diesen Befehl auf cmd aus (nicht auf der Mongo-Shell).

>path\to\mongorestore.exe -d dbname -c collection_name path\to\same\collection.bson

Hier path\to\mongorestore.exeist der Pfad des mongorestore.exeBin-Ordners von Mongodb. Datenbankname ist der Name der Datenbank. collection_nameist der Name von collection.bson.path\to\same\collection.bsonist der Weg zu dieser Sammlung.

Jetzt können Sie in der Mongo-Shell überprüfen, ob eine Datenbank erstellt wurde oder nicht (falls diese nicht vorhanden ist, wird eine Datenbank mit demselben Namen mit der Sammlung erstellt).

Ich freue mich auf
quelle
4

Nur als Referenz, wenn noch jemand mit Mongorestore zu kämpfen hat.

Sie müssen monogorestore in der Terminal- / Eingabeaufforderung und nicht in der Mongo-Konsole ausführen.

$ mongorestore -d db_name /path_to_mongo_dump/

Weitere Informationen finden Sie in den offiziellen Dokumentationen

https://docs.mongodb.com/manual/reference/program/mongorestore/

Lalit Sharma
quelle
2

Wenn Sie remote zugreifen, können Sie dies tun

für bson:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people "/home/${USER}/people.bson"

für bson im .gz (gzip) Format komprimiert:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people --gzip --dir "/home/${USER}/people.bson.gz"
Vor dem Gesetz
quelle
1

mongorestore -d Datenbankname / Pfad /

Stellen Sie sicher, dass Sie diese Abfrage im Ordner bin von mongoDb ausführen

C: \ Programme \ MongoDB \ Server \ 4.2 \ bin -

Führen Sie dann diesen obigen Befehl aus.

Jitendra Chandwani
quelle
0

Ich habe das benutzt:

mongorestore -d databasename -c file.bson fullpath/file.bson

1.Kopieren Sie den Dateipfad und den Dateinamen aus den Eigenschaften (versuchen Sie, alle bson-Dateien in einem anderen Ordner abzulegen). 2. Verwenden Sie diesen immer wieder, wenn Sie nur den Dateinamen ändern.

Rochan
quelle