我应该在索引中添加一个布尔字段来降低 MongoDB 查询中的已检查:返回率吗?

问题描述 投票:0回答:1

我有一个

updateMany
操作,其中查询部分只是两个字段,一个是简单的文本字段,另一个是布尔字段。文本字段已建立索引,并且索引在查询中正确使用,一切正常。唯一的问题是 Examined:Returned Ratio 太高(大约 6000),我想知道将布尔字段添加到索引是否会提高比率。我想是的,我的下一个问题是我是否应该这样做,因为我已经读到布尔字段不应该被索引(作为常规规则)。目前性能不是问题。

查询如下:

updateMany({textField: "value", isField: true}. {$set: {isField: false}} )

当前索引为:

{textField: 1}

mongodb indexing mongodb-query
1个回答
0
投票

如果您检查此查询上的

explain()
函数,您会发现 mongodb 实际上需要扫描集合才能找到这些记录,因为您尚未对查询中使用的所有字段建立索引。

这应该是一个复合索引。

db.{collectionName}.createIndex({textField: 1, isField: 1});
© www.soinside.com 2019 - 2024. All rights reserved.