我有几个盒子运行他们自己的mongo实例,到目前为止我每个人都有大约2 gig的数据。我有一个盒子,我现在开始将所有数据路由到,但我必须"合并"并将这些框中的数据汇总回这一个整合框。
我正在为每个方框做的是我正在运行
mongodump mydb restorepath
然后在传输bson输出后在我的大盒子中运行mongorestore。还有另一种方法吗?我担心这样做会遇到问题,比如id碰撞,你有什么问题。
答案 0 :(得分:0)
从多台机器导入文档时的Id冲突是不太可能的,因为ObjectId的3个字节代表生成id的系统的机器标识符。具有相同ObjectId的两个系统的可能性是1600万中的一个。即使你在同一台机器上运行两个MongoDB实例(除非你想尝试分片和复制,否则你不会尝试分片和复制),你不会发生冲突,因为进程ID也是ObjectId的一部分。
所有这些当然只适用于让MongoDB生成ObjectId本身的情况。您的应用程序也可以将_id
字段设置为自己的值。该值甚至不需要是ObjectId。它可以是MongoDB支持的任何值。