我有一个
updateMany
操作,其中查询部分只是两个字段,一个是简单的文本字段,另一个是布尔字段。文本字段已建立索引,并且索引在查询中正确使用,一切正常。唯一的问题是 Examined:Returned Ratio 太高(大约 6000),我想知道将布尔字段添加到索引是否会提高比率。我想是的,我的下一个问题是我是否应该这样做,因为我已经读到布尔字段不应该被索引(作为常规规则)。目前性能不是问题。
查询如下:
updateMany({textField: "value", isField: true}. {$set: {isField: false}} )
当前索引为:
{textField: 1}
如果您检查此查询上的
explain()
函数,您会发现 mongodb 实际上需要扫描集合才能找到这些记录,因为您尚未对查询中使用的所有字段建立索引。
这应该是一个复合索引。
db.{collectionName}.createIndex({textField: 1, isField: 1});