我们计划使用 MongoDB _id 作为我们将提供给客户的密钥。因此,要求是如果我们需要将数据从一个集合移动到另一个集合,则该键不应更改。将使用 db.copyDatabase() 或 mongoimport 执行复制。
将数据从一个集合复制到另一个集合的一种方法是遍历第一个集合 (C1) 中的文档并将这些文档插入到第二个集合 (C2) 中。在这种情况下,_id 应该保持不变(在 C2 中),因为它会出现在插入的文档(C1 的)中(与我们自己提供 _id 的情况相同)。
但是,如果存在复制文档的替代方式,则 _id 可能会更改,因为它取决于:
(1) UNIX 时间戳 (2) 机器标识符 (3) ProcessId
(**只有当 MongoDB 在复制时从 C1 中的文档中删除 _id 并在插入 C2 时重新生成它们时才会发生这种情况?)
无论目标集合的位置如何,我们都希望 _id 值相同:(1)在同一个数据库中(2)不同的数据库 - 相同的机器(3)不同的数据库 - 不同的机器)
谢谢