// 索引在 comId, 和 loginTime 上都有但对的索引
find // db.collontion.find({comId: “734f496571394931696b”}).skip(1200).limit(10).sort({loginTime: 1 })
aggregate // db.collection.aggregate( [{ $match: { comId: “734f496571394931696b”} }, { $sort: { loginTime: 1 } }, { $skip: 1200}, { $limit: 10 }] )
- find查询走comId索引, 数据量少 ,耗时很小
- aggregate走loginTime 全索引扫描加全文档检查。耗时非常长
xiaoxu 发表新评论
/* 1 */
[
{
“v” : 2,
“key” : {
“_id” : 1
},
“name” : “_id_”,
“ns” : “collection”
},
{
“v” : 2,
“key” : {
“comId” : 1
},
“name” : “comId_1”,
“ns” : “collection”
},
{
“v” : 2,
“key” : {
“loginTime” : 1
},
“name” : “loginTime”,
“ns” : “collection”
}
]
jieyi 已回答的问题
根据你这个执行计划,skip不同,执行计划不同。