2011-01-14 3 views
16

Насколько я вижу, все команды работают в одной базе данных в mongodb. Я хочу сделать что-то вроде этого:.Как вставить запись из одной базы данных mongo в другую?

db.mySourceCollection.find() Foreach (функция (х) {db.theDestinationCollection.save (х)});

где mySourceCollection на liveDatabase и theDestinationCollection на testDatabase.

ответ

15

Используйте use :-)

> var documents = db.mySourceCollection.find() 
> use testDatabase 
switched to db testDatabase 
> documents.forEach(function(x){ db.theDestinationCollection.insert(x) }) 

db используется для обозначения текущей базы данных, однако вы можете переключаться базы данных на лету с помощью команды use, так как я показал выше.

Проверьте команду help в оболочке - она ​​упоминает эту команду и многое другое!

+0

Спасибо! Я знал об использовании, но я бы не подумал о сохранении состояния в переменной. IMHO Я бы предположил, что метод use() на db используется для использования в жидкости, например. db.use ('sourceDb'). collectionA.do (db.use ('destDb'). – b7kich

+0

Может случиться, что в базе данных есть символы UTF-8. Поскольку это выполняется через клиента, если клиент является родным (например, для Ubuntu, '$ mongo --version' =>« версия оболочки MongoDB: 1.6.3'), может отсутствовать UTF-8, и тогда копия завершится неудачно. Если это так, и вы не хотите ставить грязный на ваш сервер для перекомпиляции нового клиента, вы всегда можете перекомпилировать его на отдельный компьютер и выполнить эту работу через сеть, подключающуюся к удаленному серверу. Тем не менее, данные будут передаваться с сервера на клиент и обратно, поэтому это может быть В любом случае с удаленным клиентом UTF-8 работает !!! –

13

use dbname не работает в сценарном режиме (т.е. при создании сценариев оболочки с JavaScript), так что вы должны использовать метод db.getSiblingDB() вместо того, чтобы переназначить «дб» переменной, например:

db = db.getSiblingDB("otherdb") 

Подробнее здесь : http://www.mongodb.org/display/DOCS/Scripting+the+shell

Смежные вопросы