Comment importer le format de fichier .bson sur mongodb

163

J'ai exporté la base de données sur le serveur à l'aide de la mongodumpcommande et le vidage est stocké dans un .bsonfichier. Je dois importer cela dans mon serveur local à l'aide de la mongorestorecommande. Cependant, cela ne fonctionne pas. Quelle est la mongorestorecommande correcte et quelles sont les autres tools to restore db?

binalay
la source

Réponses:

342

C'est très simple d'importer un fichier .bson :

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

Incase uniquement pour une seule collection. Essayez ceci:

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

Pour restaurer le dossier complet exporté par mongodump:

mongorestore -d db_name /path/
JERRY
la source
4
Également utile pour le fichier bson exporté via mongoexportsi vous n'exportez que des collections uniques. mongoimportme donnait des erreurs de "caractère invalide". Merci!
divillysausages
4
SyntaxError: manquant; avant la déclaration @ (shell): 1: 16
151291
3
Vous pouvez peut-être ajouter que ces commandes doivent être exécutées à partir de l'invite de commande et non de la console mongo. Cela aiderait les nouveaux utilisateurs
Dreams
2
Ajout à cette réponse. Pour ceux qui souhaitent restaurer à distance un fichier bson. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper
1
Merci, cela a fonctionné pour mon dossier complet après l'extraction de tar.gz
Braham Dev Yadav
64

mongorestoreest l'outil à utiliser pour importer les fichiers bson qui ont été vidés par mongodump.

À partir de la documentation :

mongorestore prend la sortie de mongodump et la restaure.

Exemple:

# 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
la source
Dois-je conserver la dump/dbName/collectionName.bsonstructure des dossiers? J'ai utilisé mongodump, mais maintenant je veux l'importer en utilisant mongorestoresur une machine Linux distante.
Kevin Meredith
@Kevin: Je ne suis pas sûr, pour être honnête, mais je suppose que oui. Utilisez un programme FTP pour transférer les fichiers avec la structure des dossiers?
Cameron
5
J'ai réussi à importer une base de données mongo en utilisant un nom de dossier non "dump":mongorestore --collection people --db accounts myDump/accounts/people.bson
Kevin Meredith
35
bsondump collection.bson > collection.json

puis

mongoimport -d <dbname> -c <collection> < collection.json
Anton Shutik
la source
7
Notez l'avertissement de la documentation d'import-export de 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
Oui. Cela gâche les caractères chinois / japonais.
user2619824 le
10

Exécutez ce qui suit à partir de la ligne de commande et vous devriez être dans le répertoire bin Mongo.

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

puneet goyal
la source
9

Vous devez exécuter cette commande mongorestore via cmd et non sur Mongo Shell ... Jetez un œil à la commande ci-dessous sur ...

Exécutez cette commande sur cmd (pas sur le shell Mongo)

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

Voici le path\to\mongorestore.exechemin du mongorestore.exedossier bin intérieur de mongodb. dbname est le nom de la base de données. collection_nameest le nom de collection.bson. path\to\same\collection.bsonest le chemin menant à cette collection.

Maintenant, à partir de mongo shell, vous pouvez vérifier que la base de données est créée ou non (si elle n'existe pas, la base de données du même nom sera créée avec la collection).

Avoir hâte de
la source
4

Juste pour référence si quelqu'un est toujours aux prises avec mongorestore.

Vous devez exécuter monogorestore dans le terminal / l'invite de commande et non dans la console mongo.

$ mongorestore -d db_name /path_to_mongo_dump/

pour plus de détails, vous pouvez visiter les documentations officielles

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

Lalit Sharma
la source
2

Si votre accès à distance, vous pouvez le faire

pour bson:

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

pour bson compressé au format .gz (gzip):

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"
En loi
la source
1

mongorestore -d nom_base / chemin /

assurez-vous d'exécuter cette requête dans le dossier bin de mongoDb

C: \ Program Files \ MongoDB \ Server \ 4.2 \ bin -

puis exécutez cette commande ci-dessus.

Jitendra Chandwani
la source
0

J'ai utilisé ceci:

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

1. copiez le chemin du fichier et le nom du fichier à partir des propriétés (essayez de mettre tous les fichiers bson dans un dossier différent), 2. utilisez-le encore et encore en changeant le nom de fichier uniquement.

Rochan
la source