首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找和排序的MongoDB索引用法

查找和排序的MongoDB索引用法
EN

Stack Overflow用户
提问于 2015-04-22 22:00:30
回答 2查看 170关注 0票数 2

我有一个查询,其中find()使用不同的文档属性,然后使用排序。

例如:

代码语言:javascript
复制
document = { a : "", b : "", c : "", d : "", e : ""}

db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1})

我可以创建两个索引,一个用于find(),另一个用于排序(),MongoDB会相应地使用它们吗?

代码语言:javascript
复制
db.col.createIndex({a : 1, b : 1, c : 1})
db.col.createIndex({d:1, e:1})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 13:04:59

当MongoDB操作需要一个与查询谓词完全独立的索引时,sort() (在3.0时)不能使用多个索引(也称为“索引交集”)。您可以使用MongoDB的解释功能确认正在考虑哪些索引(以及获胜计划)

代码语言:javascript
复制
db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1}).explain(true)

例如,这意味着理想的复合索引可能是{a:1, b:1, c:1, d:1, e:1}上的单个索引。

有关更多细节,请参见:

票数 2
EN

Stack Overflow用户

发布于 2015-04-22 22:24:03

是的,mongodb将将这两个索引用于不同的目的。添加索引的规则如下所示

索引中字段的顺序应该是:

首先,您将在其中查询确切值的字段。第二,您将对其进行排序的字段。最后,您将在其中查询一系列值的字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29809701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档