【发布时间】:2018-10-22 12:21:27
【问题描述】:
我有一个包含 1000 万条数据的 MongoDB 集合。我有两个主要字段domain(字符串类型)和level(整数类型)。这两个字段都被索引了,但是当我在 find 语句之后对结果进行排序时,mongo 需要很长时间才能返回结果。
如何从 find 语句中快速排序结果?
db.collection.find({"domain":"DOMAIN_NAME"}).sort({"level":1})
【问题讨论】:
-
什么是
Cr?此集合是否已分片? -
使用
.explain()(docs.mongodb.com/manual/reference/method/cursor.explain) 将有助于了解 Mongo 是如何实际执行您的查询的,当索引和速度发挥作用时,这通常是很好的第一步 -
@VenkataNaresh 什么是千万?什么是十万?
-
您说“两个字段都已编入索引”,但除非您定义了
{domain: 1, level: 1}的一个复合索引,否则排序将无法使用索引。您能否更新您的问题以显示db.collection.getIndexes()的输出? -
请不要使用印度单词(如 crore),绝对不要使用印度单词的缩写。
标签: mongodb