【发布时间】:2026-02-10 21:10:02
【问题描述】:
db.collection.aggregate(
{ "$match" : {
"key" : "mykey"
}
},
{
"$sort" : {
"time" : -1
}
},
{
"$limit" : 1
}
)
示例文档:
{
key: "key1",
time: ISODate("2014-07-04T20:04:46.904Z")
}
索引
"time" : -1
"key" : 1,
"_id" : 1
当集合中存在“mykey”时查询需要30ms,当“mykey”不存在时需要10s, 解释告诉我使用了索引。 这是一个有上限的集合,因此通常会出现“键”丢失的情况。 为什么需要这么长时间。 顺便提一句。 MongoDB 2.4
进一步探索:
删除排序的索引可以减少查找时间:
解释在排序字段上带有和不带索引的聚合表明,带有索引的排序在管道的开头执行,没有排序的索引它作为管道的最后一步执行
【问题讨论】:
-
您有问题吗?
-
为什么钥匙丢了这么久。
-
“存在”是什么意思?该值是否存在于该键或该字段存在于架构中?
-
当“key”的值不存在时。如果有帮助,我正在大型(>20M 文档)日志集合中扫描 ObjectId。
-
如果您将架构与创建的任何索引和示例文档一起共享,那么通过此操作会更容易一些。
标签: performance mongodb aggregation-framework