Восстановление единой коллекции в существующем mongodb
Я терпеть неудачу, чтобы иметь возможность восстановить единую коллекцию в существующей базе данных.
Я запускаю Ubuntu 14.04 с версией mongo 2.6.7
В моем домашнем каталоге есть дамп /mydbname/contents.bson.
Если я запустил
mongorestore --collection contents --db mydbname
Тогда я получаю:
connected to: 127.0.0.1
don't know what to do with file [dump]
Если я добавлю в путь
mongorestore --collection contents --db mydbname --dbpath dump/mydbname
Тогда я получаю
If you are running a mongod on the same path you should connect to that instead of direct data file access
Я пробовал различные другие комбинации, варианты и т.д., и я просто не могу разобраться в этом, поэтому я прихожу в сообщество за помощью!
Ответы
Ответ 1
Если вы хотите восстановить одну коллекцию, вам необходимо указать файл дампа коллекции. Файл дампа коллекции находится в папке "dump/dbname/". Итак, если ваша папка дампа находится в вашем текущем рабочем каталоге, команда будет выглядеть примерно так:
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson
Ответ 2
Если вы восстанавливаете несколько коллекций, вы можете использовать цикл:
for file in "$HOME/mongodump/dev/<your-db>/"* ; do
if [[ "$file" != "*metadata*" && "$file" != "system.*" && "$file" != "locks.*" ]]; then
file="$(basename "$file')"
mongorestore \
--db cdt_dev \
--collection "${file%.*}" \ # filename w/o extension
--host "<your-host>" \
--authenticationDatabase "<your-auth-db>" \
-u "user" \
-p "pwd" \
"$HOME/mongodump/dev/<your-db>/$file"
fi;
done
Ответ 3
Действия по восстановлению определенной коллекции в mongodb.
1) Перейдите в каталог, где находится ваша папка дампа.
2) Выполните следующую команду, изменив ее в соответствии с именем вашей базы данных и именем вашей коллекции.
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson
Если вы получили Failed: yourdbname.collection.name: error creating indexes for collection.name: createIndex error: The field 'safe' is not valid for an index specification error
, то можете использовать следующую команду:
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson --noIndexRestore
Ответ 4
Я думаю, что теперь это делается с помощью опции --nsInclude
:
mongorestore --nsInclude test.purchaseorders dump/
dump/
- это папка с данными вашего монодумпа, test
- это дБ, а purchaseorders
- это коллекция.
https://docs.mongodb.com/manual/reference/program/mongorestore/