据我所知,所有命令都在mongodb中的同一个数据库上运行。我想做这样的事情:
db.mySourceCollection.find()。forEach(function(x){db.theDestinationCollection.save(x)});
其中mySourceCollection
位于liveDatabase
且theDestinationCollection
位于testDatabase
。
答案 0 :(得分: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
命令 - 它提到了这个命令以及更多内容!
答案 1 :(得分:13)
use dbname
在脚本模式下不起作用(即使用javascript编写shell脚本时),因此您应该使用db.getSiblingDB()
方法重新分配'db'变量,例如:
db = db.getSiblingDB("otherdb")
此处有更多信息:http://www.mongodb.org/display/DOCS/Scripting+the+shell