Я хочу скопировать набор в той же базе данных и дать ее, другое имя - в основном берет снимок.
Что лучший способ состоит в том, чтобы сделать это? Существует ли команда, или я должен скопировать каждую запись в свою очередь?
Я знаю cloneCollection
команда, но это, кажется, для копирования к другому серверу только.
Я также знаю mongoimport
и mongoexport
, но поскольку я делаю это через PHP, который я предпочел бы не делать, обращается к оболочке.
У Вас есть несколько опций, но самое быстрое:
mongodump -d db -c sourcecollection
mongorestore -d db -c targetcollection --dir=dump/<db>/<sourcecollection.bson>
mongoexport -d db -c sourcecollection | mongoimport -d db -c targetcollection --drop
или в php:
`mongoexport -d db -c sourcecollection | mongoimport -d db -c targetcollection --drop`;
после этого Вы имеете
mongo db < script.js
, где, как показано в документы монго , script.js содержит что-то как:
db.myoriginal.find().forEach( function(x){db.mycopy.insert(x)} );
самое медленное (порядком величины или больше) способ скопировать набор будет состоять в том, чтобы использовать собственный php драйвер - просто из-за перемещающейся информации. Но Вы могли выпустить вышеупомянутый запрос монго, если Вы абсолютно хотите избежать вызовов cli с помощью , дБ выполняются функция.
Примечание: Read ответ Обновления , они важны!
<час>самый простой & эффективный путь при помощи copyTo () , таким образом, можно использовать:
db.source.copyTo("target");
& если "target"
не будет существовать, то это будет создано
- Обновление -
Согласно Документация CopyTo , поскольку copyTo()
оценка использования внутренне, операции копии заблокируют все другие операции на mongod экземпляре. Таким образом, это не должно использоваться на производстве среда.
- Обновление -
, поскольку CopyTo()
использование eval()
внутренне & eval()
удерживается от использования начиная с версии 3.0, таким образом CopyTo()
также удерживается от использования начиная с версии 3.0 .
В дополнение к 1-му решению AD7six, если Вы используете mongoexport / импорт быть уверенными в Ваших типах данных набора и конфигурации монго, как объяснено здесь: http://docs.mongodb.org/manual/reference/mongodb-extended-json/
Можно использовать функцию copyDatabase в оболочке монго:
http://docs.mongodb.org/manual/tutorial/copy-databases-between-instances/