2011-01-14 72 views
16

據我所見,所有命令都在mongodb中的相同數據庫上運行。我想要做這樣的事情:如何將一個記錄從一個mongo數據庫插入另一個?

db.mySourceCollection.find()。forEach(function(x){db.theDestinationCollection.save(x)});

其中mySourceCollectionliveDatabasetheDestinationCollectiontestDatabase

回答

15

使用use :-)

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

db被用來指代當前連接的數據庫,但是你可以使用use命令飛切換數據庫,正如我上面顯示。

查看shell中的help命令 - 它提到了這個命令以及更多!

+0

謝謝!我知道使用,但我不會想到堅持變量的狀態。我希望在流體使用的db上有一個use()方法,例如, db.use('sourceDb')。collectionA.do(db.use('destDb')。 – b7kich 2011-01-14 18:55:43

13

use dbname不腳本模式工作(即腳本使用JavaScript shell時),所以你應該使用db.getSiblingDB()方法,而不是重新分配「DB」的變量,例如:這裏

db = db.getSiblingDB("otherdb") 

更多信息:http://www.mongodb.org/display/DOCS/Scripting+the+shell

相關問題