aro*_*z90 0 mongodb mongo-shell mongodb-query
我们计划使用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)不同的数据库 - 不同的机器)
谢谢
不,_id数字不会改变.
将没有 _id字段的文档插入数据库时,将生成新的ObjectId .当您插入已有_id字段的文档时,MongoDB将不会触及它.
时间戳,机器标识符和processID指的是生成ObjectID的那些.这可以是数据库服务器,但也可以由应用程序服务器上的MongoDB驱动程序生成.在这种情况下,MongoDB不会自行更改它.
顺便说一下:_id 可以是一个自动生成的ObjectId,但它没有必要.您也可以使用任何其他值作为_id,只要您可以保证它是唯一的.因此,当您的数据已经具有自然键时,您可以在需要时将其用作_id.
| 归档时间: |
|
| 查看次数: |
1098 次 |
| 最近记录: |