如何为多列范围查询建立复合索引

发布于 2024-11-06 04:19:51 字数 188 浏览 5 评论 0原文

我想对多列进行范围查询。例如:

db.dmnscore.find({price:{$lte:10}, "updated" : {"$gte" : new 日期(1304874799000)},“分数”:{“$gte”:0,“$lte”: 1000}).sort({分数:-1}) 是否可以为该查询创建合适的复合索引?

谢谢

I want to make a range query on multiple columns. for example:

db.dmnscore.find({price:{$lte:10}, "updated" : {"$gte" : new
Date(1304874799000)} ,"score" : {"$gte" : 0,"$lte" :
1000}).sort({score:-1})
Is it possible to make a proper compound index for this query?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半世蒼涼 2024-11-13 04:19:51

最简单的就是自己测试一下。在属性上创建索引,然后运行此查询:

db.dmnscore.find({price:{$lte:10}, "updated" : {"$gte" : new Date(1304874799000)} ,"score" : {"$gte" : 0,"$lte" : 1000}).sort({score:-1}).explain()

注意末尾的 explain() 。如果结果包含 Btree 则表示没问题,如果结果包含 BasicCursor 则说明尚未使用索引。

The easiest thing is to test it yourself. Create an index on the properties, then run this query:

db.dmnscore.find({price:{$lte:10}, "updated" : {"$gte" : new Date(1304874799000)} ,"score" : {"$gte" : 0,"$lte" : 1000}).sort({score:-1}).explain()

notice the explain() on the end. If the result contains Btree you're good, if the result contains BasicCursor it hasn't used the index.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文