【发布时间】:2013-03-26 07:25:34
【问题描述】:
我正在尝试为集合中的所有文档插入一个新字段。 我在“user_id”字段上有一个升序索引。
a) 为了从索引中受益,被更新/插入的字段是否应该被索引包含/转换? b) 另外,考虑到我不进行任何范围操作,哈希索引在这种情况下的性能是否更高。
db.collA.update( { user_id: 123 }
, { $set : { newfield : "something" } }
, { multi:true} )
【问题讨论】:
-
将更新的字段放入索引是没有用的,除非您只希望更新索引而不是实际的磁盘文档。至于散列索引,我看不出它们在这里有什么帮助,即使您使用散列索引,MongoDB 仍然会进行内部范围查询,以查找通过 btree 部分的确切值,其值在此 id 的范围内(说范围 1-1000 适合您的 123),然后会进行一种二进制搜索来找到确切的值。使用哈希索引可能会将整个索引加载到 RAM 中,而不是您需要的段。
-
谢谢。试图把我在 mongo 索引上读到的随机东西放在一起。你应该把它作为一个答案,我会接受它。
-
我可能错过了最近几个版本中关于哈希索引的一些变化,所以我会看看是否有人有一些我忽略的金块
标签: mongodb