如何将一个集合从一个MongoDB克隆到同一服务器上的另一个MongoDB
我使用的是Mongo3.2。我的本地主机上有两个数据库,分别名为client1和client2。 现在client1包含一个名为users的集合。 我想将此集合克隆到客户端2 我试过:- 使用客户端2 db.cloneCollection('localhost:27017','client1.users',', {'active':true}) 这个输出 { “ok”:0.0, “errmsg”:“无法从自身完成收集” } 是否禁止在同一服务器上将集合从一个数据库克隆到另一个数据库如何将一个集合从一个MongoDB克隆到同一服务器上的另一个MongoDB,mongodb,mongodb-query,clone,Mongodb,Mongodb Query,Clone,我使用的是Mongo3.2。我的本地主机上有两个数据库,分别名为client1和client2。 现在client1包含一个名为users的集合。 我想将此集合克隆到客户端2 我试过:- 使用客户端2 db.cloneCollection('localhost:27017','client1.users',', {'active':true}) 这个输出 { “ok”:0.0, “errmsg”:“无法从自身完成收集” } 是否禁止在同一服务器上将集合从一个数据库克隆到另一个数据库 db.clo
db.cloneCollection()
直接在MongoDB实例之间复制数据
这意味着您不能在同一mongod实例中进行克隆。使用和克隆您的收藏
由于4.2 MongoDb引入了允许从
db1.collection
复制到db2.collection
的操作符 几件事:
v4.2
,您应该停止使用copyDB
&cloneCollection
,因为它们已被弃用&开始使用and或&bson
转换为json
&再次mongoimport会在编写时将json
转换为bson
,这就是它们速度慢的原因。当您希望直观地分析集合数据或将json
数据用于任何其他目的时,可以使用mongoexport和mongoimportdeclare - a collections = ("collectionName1" "collectionName2")
for i in "${collections[@]}"
do
echo "$i"
mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i"
mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson;
done
/mongodump
和/mongorestore
一样运行。如果要备份多个集合,上述脚本将非常有用,您需要在脚本中指定以下几项:
mongodump——主机“所有碎片”
->如果MongoDB是副本集,则需要指定所有碎片;如果不是副本集,则可以指定localhost:27017
mongorestore--host=host shard name
->您必须指定副本集的一个shard,否则您的localhost
,这里几乎没有什么东西是可选的--ssl
,--username
,--password
bson
文件,因此,您需要在restore命令中引用dbName
,集合名称将取自变量i
->/dump/dbName/“$i”。bson
v3.2
太旧了&在基于云的MongoDB服务中,它已经到了生命周期的尽头,所以请尽快升级。如果你正在寻找一个免费的mongo实例或者从MongoDB开始,你可以试试atlas