mongorestore时,MongoDB如何处理对象ID重叠?

时间:2019-10-30 01:22:35

标签: database mongodb

我正在尝试将一堆数据插入单独的集合中,以减少插入时间。 因此,之后,我将从它们中转储并还原单个新集合以包含所有数据。 我想这在下面我的问题之前很奇怪。

这里,我担心的是如果对象ID发生重叠该怎么办。 MongoDB,说有第一个(已插入)和第二个(已插入),它们具有相同的对象ID,这会给第二个错误并退出执行, 只是忽略(不太可能),或替换第二个对象的对象ID(看起来很奇怪,因为该ID是主键)。

在任何情况下,解决方案都是“分片”,无需担心ID重叠吗? 但是我还不知道在任何设置等方面都可以使用分片,因此我不希望很快就可以使用。

2 个答案:

答案 0 :(得分:0)

与集群(共享)相比,MongoDB(独立)的容量非常有限。如果您想在独立模式下增加插入量,那么您将不会取得太大的成就。如果您在单个独立数据库中处理多个集合中的吞吐量很好,那么将其放入单个集合中就可以了。第二,insert + dump + insert绝对比仅在单个集合中插入慢。因此,我建议重新考虑您的解决方案。是的,默认情况下_id是唯一字段,因此尝试使用_id插入多个对象会导致错误。

答案 1 :(得分:0)

不同集合的两个文档具有相同ObjectId的情况极不可能,因为objectId也是由随机值构成的。请检查https://docs.mongodb.com/manual/reference/method/ObjectId/

要回答这个问题,是否要提高插入速度,可以检查批量插入,它肯定更快,如果启用了副本,则设置正确的写入问题将提高插入速度。