我有一个在mongoDB中的集合,在一个本地运行的项目,并且必须将集合复制到dev服务器。 你能告诉我怎么做,考虑到:
本地机器(源)可以从外部访问,但只能使用IP。
本地mongo的版本是2.0.4,而dev服务器上的mongo版本是2.2.2。
我做了一点研究,但我不确定有些事情…比如我应该为源数据库select哪种凭据? …用于SSH连接的那些? … 要么 … ? …
提前致谢 :)
我think of的最好的解决办法是这样的:
db.prices.find()
{"_id" : ObjectId("..."), "action" : "show", "price" : 12 } {"_id" : ObjectId("..."), "action" : "hide", "price" : 10 } {"_id" : ObjectId("..."), "action" : "poke", "price" : 20 } ................
到这样一个(添加“,”后每个JSON,删除ID,所以我有一个数组在最后):
[ {"action" : "show", "price" : 12 }, {"action" : "hide", "price" : 10 }, {"action" : "poke", "price" : 20 } ................ ]
然后将这个新的JSON数组传递给新集合的插入方法:(将数组复制到剪贴板中,直接从我使用的文本编辑器复制)
db.prices.inset( + Shift + Insert + )
而且瞧:)所有的数据都被转移:)
首先,我build议你升级你的MongoDB版本 – 你的开发版本和本地版本都是非常古老的,如果可能的话,你应该拥有相同的版本。 2.0和2.2版本是非常不同的(2.2中没有全局locking),并且自从列出的版本以来都有多个稳定版本。 最后,这两个版本都被认为是生命的终结 。
至于如何在它们之间传输数据,你有几个select,但如果数据相对较小,那么最简单的select是mongodump 。 简单地使用它来转储出你想要传输给BSON的本地数据(如果你把整个集合或数据库包括在内,将包括索引等),然后使用mongorestore将这些数据插入到开发数据库中。 再次,我会build议使用比2.2.2或2.0.4更新版本的mongodump / mongorestore – 在以后的版本中有一些错误修复了,否则你可能会遇到(更新版本的工具应该是向后兼容的)。
就其他选项而言,如果您要访问整个数据库,则可以简单地将该数据库的整个文件集从本地主机复制到开发服务器。 您需要重新启动数据库,这意味着每次在开发服务器上清除该数据库,但根据您的需要,这可能是一个选项。 您还可以查看mongo连接器 ,以更实时和持续的方式在本地和开发之间镜像数据。 也可能有其他方法来实现这一点,但这是最直接的。
您可以从目标服务器创build另一个连接并使用save()函数。
例如:
conn2 =新的Mongo(“desitination_server:port”)
desti_db = conn2.getDB(“destination_db_name”) – >现在您可以从源数据库连接访问目标mongodb服务器。
db.sourceCollection.find()。forEach(function(x){desti_db.targetCollectionName.save(x)}); – >读取当前源数据库集合,并将其保存在目标MongoDB中
你为什么不尝试db.cloneCollection()? http://docs.mongodb.org/manual/reference/method/db.cloneCollection/
您可以在开发mongodb实例上运行db.cloneCollection(from_instance,collection_name,query)。 from_instance是本地实例的IP地址和端口地址。 查询是可选的 – 如果没有input,它将拉取源集合中的所有文档。
所以,像这样:db.cloneCollection(“12.34.56.78:27017”,“mydb.mycollectionname”)
MongoCopyPaste:在远程服务器上查找任何registry。 复制并粘贴到命令服务器。 从一个到多个集合。