我们计划使用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)不同的数据库 - 不同的机器)
谢谢