【问题标题】:Does mongodb reindex if you change the field that it is used in index?如果更改索引中使用的字段,mongodb 是否会重新索引?
【发布时间】:2014-05-04 20:22:23
【问题描述】:

假设您有一个包含名为“primary_key”的字段的集合, {"primary_key":"1234", "name":"jimmy", "lastname":"page"}

我在“primary_key”上有一个索引。

这个集合有数百万行,我想看看更改其中一条记录的 primary_key 是多么昂贵。它会触发整个表的重新索引吗?还是只是重新索引更改的记录?在任何一种情况下都那么昂贵吗?

【问题讨论】:

    标签: mongodb indexing reindex


    【解决方案1】:

    更新 mongodb 中的索引字段会导致更新使用它的索引(或索引,如果您有多个)。它不会“重新索引”。不应该那么昂贵 - 实际上您将删除旧条目并插入一个新条目。

    这个文档有很多关于 mongodb 索引的细节:

    http://docs.mongodb.org/master/MongoDB-indexes-guide.pdf

    顺便说一句,请记住,mongodb 使用一个特殊字段 _id 作为主键

    _id 每个 MongoDB 文档中都需要一个字段。 _id 字段必须具有唯一值。您可以将 _id 字段视为文档的 首要的关键。如果您创建一个没有 _id 字段的新文档, MongoDB 自动创建字段并分配一个唯一的 BSON 对象 ID。

    您无法更新 _id 字段。

    【讨论】:

    • 感谢您的回答。链接也很好,我知道整个文档都与索引有关,但如果您能指出哪个部分与问题更相关,那就太好了。
    • 我是这个答案的迟到者,截至 2020 年,上述链接现已断开,可通过以下方式访问相关文档的链接:docs.mongodb.com/manual/applications/indexes
    猜你喜欢
    • 2022-11-29
    • 2017-04-23
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多