Як імпортувати .bson формат файлу в mongodb


162

Я експортував базу даних на сервер за допомогою mongodumpкоманди, а дамп зберігається у .bsonфайлі. Мені потрібно імпортувати це на мій локальний сервер за допомогою mongorestoreкоманди. Однак це не працює. Яка правильна mongorestoreкоманда та які інші tools to restore db?

Відповіді:


342

Імпортувати .bson файл дуже просто :

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

Напишіть лише на одну колекцію. Спробуйте:

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

Для відновлення повної папки, експортованої mongodump:

mongorestore -d db_name /path/

4
Також корисно для файлу bson, експортованого через, mongoexportякщо ви експортуєте лише одні колекції. mongoimportдавав мені помилки "недійсного характеру". Дякую!
divillysausages

4
SyntaxError: відсутній; перед заявою @ (оболонка): 1: 16
151291

3
Можливо, ви можете додати, що ці команди виконуються з командного рядка, а не з консолі mongo. Це допоможе новим користувачам
Dreams

2
Додавання до цієї відповіді. Для тих, хто хоче віддалено відновити файл bson. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper

1
Дякую, він працював на мою повну папку після розпакування з tar.gz
Braham Dev Yadav

63

mongorestoreце інструмент для імпорту файлів bson, які викинули mongodump.

З документів :

Монгоресторе приймає вихід з монгопомпа та відновлює його.

Приклад:

# 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

Чи потрібно зберігати dump/dbName/collectionName.bsonструктуру папок? Я раніше mongodump, але тепер я хочу імпортувати його за mongorestoreдопомогою віддаленої скриньки Linux.
Кевін Мередіт

@Kevin: Я не впевнений, чесно кажучи, але я би припустив, що так. Використовуєте програму FTP для передачі файлів разом із структурою папок?
Камерон

5
Мені вдалося імпортувати монго db, використовуючи назву папки, що не "скидає":mongorestore --collection people --db accounts myDump/accounts/people.bson
Кевін Мередіт

35
bsondump collection.bson > collection.json

і потім

mongoimport -d <dbname> -c <collection> < collection.json

7
Зверніть увагу на попередження з імпортно-експортної документації 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

Так. Це псує китайські / японські символи.
користувач2619824

10

Виконайте наступне з командного рядка, і ви повинні опинитися у каталозі бін Mongo.

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


9

Ви повинні запустити цю команду mongorestore через cmd, а не на Mongo Shell ... Подивіться нижче на команду на ...

Виконати цю команду на cmd (не на оболонці Mongo)

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

Ось path\to\mongorestore.exeшлях до mongorestore.exeвнутрішньої папки mongodb. dbname - ім'я бази даних. collection_nameім'я collection.bson. path\to\same\collection.bsonце шлях до цієї колекції.

Тепер з оболонки mongo ви можете переконатися, що база даних створена чи ні (якщо її не існує, база даних з таким іменем буде створена з колекцією).


4

Для довідки, якщо хтось все ще бореться з монгоресторі.

Ви повинні запустити monogorestore в терміналі / командному рядку, а не в консолі mongo.

$ mongorestore -d db_name /path_to_mongo_dump/

для отримання більш детальної інформації ви можете відвідати офіційні документації

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


2

Якщо ваш доступ віддалений, ви можете це зробити

для bson:

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

для стиснення bson у форматі .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"

1

mongorestore -d db_name / шлях /

переконайтеся, що ви запускаєте цей запит у бін папці mongoDb

C: \ Файли програми \ MongoDB \ Server \ 4.2 \ bin -

потім запустіть цю вище команду.


0

Я використав це:

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

1.копіюйте шлях до файлу та ім'я файлу з властивостей (спробуйте помістити всі файли bson в іншу папку), 2.використовуйте це знову і знову, змінюючи лише ім'я файлу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.