Как импортировать формат файла .bson на mongodb


163

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

Ответы:


342

Импортировать файл .bson очень просто :

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

Incase только для одной коллекции. Попробуйте это:

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

Для восстановления всей папки, экспортированной с помощью mongodump:

mongorestore -d db_name /path/

4
Также полезно для файла bson, экспортируемого через, mongoexportесли вы экспортируете только отдельные коллекции. mongoimportдавал мне ошибки "недопустимый характер". Спасибо!
divillysausages

4
Ошибка синтаксиса: отсутствует; до утверждения @ (оболочка): 1: 16
151291

3
Может быть, вы можете добавить, что эти команды должны запускаться из командной строки, а не из консоли Монго. Это помогло бы новым пользователям
Dreams

2
Добавление к этому ответу. Для тех, кто хочет удаленно восстановить файл bson. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper

1
Спасибо, это сработало для моей полной папки после извлечения из tar.gz
Брахам Дев Ядав

64

mongorestoreэто инструмент, используемый для импорта BSON файлов , которые были сброшены mongodump.

Из документов :

mongorestore берет выходные данные из 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
Мне удалось успешно импортировать базу данных mongo, используя имя папки без «дампа»: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

Ага. Это портит китайские / японские символы.
user2619824

10

Запустите следующую команду из командной строки, и вы должны быть в каталоге Mongo bin.

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внутренней папке bin в mongodb. dbname - это имя базы данных. collection_nameэто имя collection.bson. path\to\same\collection.bsonэто путь к этой коллекции.

Теперь из оболочки mongo вы можете проверить, создана база данных или нет (если она не существует, база данных с тем же именем будет создана с коллекцией).


4

Просто для справки, если кто-то все еще борется с mongorestore.

Вы должны запустить 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 имя_БД / путь /

убедитесь, что вы выполняете этот запрос в папке bin mongoDb

C: \ Program Files \ 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.