我有一个用户文档的结构如下
email: string
version: number
username: string
此用户集合具有以下索引
collection.createIndex({email: 1}, {unique: true})
collection.createIndex({email: 1, version: 1})
第一个索引可确保电子邮件的唯一性,第二个索引可在执行此类查询时实现更高效的查找和更新
collection.updateOne({email: "...", version: 2}, data)
我担心的是-每次用户文档更新时,它的版本都会增加。这是否意味着现在每个电子邮件版本的组合都有一个索引?这意味着随着时间的推移,这样的索引将占用大量的资源。有没有可能让mongo在版本改变时删除旧的电子邮件版本索引(因为它只能增加)?
1条答案
按热度按时间8ljdwjyq1#
索引是在存储引擎端实现的。Mongo只是使用它们。在wiredtiger的情况下,它是常规索引的b树。任何改变索引字段的文档更新都会导致删除树中的前一个节点并插入新的节点。