【发布时间】:2021-05-20 16:22:02
【问题描述】:
我有一组1.2M 文档,我正在使用pagination(每页25 个)列出它们。为此,我分别使用Aggregation Framework 和$sort->$skip->$limit->$project 阶段。一切正常,但$skip 的奇怪行为导致nReturned 文档具有很高的价值,因为我一直在浏览页面。
例如,假设 $limit => 25,第 1 页 => nReturned 25, Skip 0, Display 1-25,在第 2 页 => nReturned 50, Skip 25, Display 26-50,在第 3 页 => nReturned 75, Skip 50, Display 51-75 等等...和在第 LAST => @987654331 @
如果我访问最后几页,nReturned, totalDocsExamined and totalKeysExamined 将接近 120 万,因为我有很多记录。
查询
db.collection.aggregate([
{
$sort : {
date_added : -1
}
},
{
$skip : 50
},
{
$limit : 25
},
{
$project : {
luid : 1,
name : 1
}
}
])
我做错了什么还是有什么办法可以优化这个查询?
【问题讨论】:
-
我忘了提到我在
date_added : -1上使用索引
标签: mongodb mongoose aggregation-framework