【发布时间】:2014-05-04 20:22:23
【问题描述】:
假设您有一个包含名为“primary_key”的字段的集合, {"primary_key":"1234", "name":"jimmy", "lastname":"page"}
我在“primary_key”上有一个索引。
这个集合有数百万行,我想看看更改其中一条记录的 primary_key 是多么昂贵。它会触发整个表的重新索引吗?还是只是重新索引更改的记录?在任何一种情况下都那么昂贵吗?
【问题讨论】:
假设您有一个包含名为“primary_key”的字段的集合, {"primary_key":"1234", "name":"jimmy", "lastname":"page"}
我在“primary_key”上有一个索引。
这个集合有数百万行,我想看看更改其中一条记录的 primary_key 是多么昂贵。它会触发整个表的重新索引吗?还是只是重新索引更改的记录?在任何一种情况下都那么昂贵吗?
【问题讨论】:
更新 mongodb 中的索引字段会导致更新使用它的索引(或索引,如果您有多个)。它不会“重新索引”。不应该那么昂贵 - 实际上您将删除旧条目并插入一个新条目。
这个文档有很多关于 mongodb 索引的细节:
http://docs.mongodb.org/master/MongoDB-indexes-guide.pdf
顺便说一句,请记住,mongodb 使用一个特殊字段 _id 作为主键
_id 每个 MongoDB 文档中都需要一个字段。 _id 字段必须具有唯一值。您可以将 _id 字段视为文档的 首要的关键。如果您创建一个没有 _id 字段的新文档, MongoDB 自动创建字段并分配一个唯一的 BSON 对象 ID。
您无法更新 _id 字段。
【讨论】: