我试图理解为什么会这样:
db.items.find({uid: {$in:[34, 54, 53,1,2,3,5,6,7]} }).limit(40).sort({_id:-1}).explain()
给我回复:
"cursor" : "BtreeCursor _id_-1_uid_1 multi",
"nscanned" : 167,
"nscannedObjects" : 40,
"n" : 40,
...
然而,没有排序
db.items.find({uid: {$in:[34, 54, 53,1,2,3,5,6,7]} }).limit(40).explain()
给我回复:
"cursor" : "BtreeCursor uid_1 multi",
"nscanned" : 40,
"nscannedObjects" : 40,
"n" : 40,
...
所以我没有得到的是,为什么当我添加排序时,它会扫描更多文档?我按 id排序,我也有这个索引来尝试改进“ _id_-1_uid_1”,但它仍会扫描很多文档。
在我的情况下,这是一个很大的问题,因为这是我的本地数据库,因此只扫描了一些文档,但是在我的实际网站中,我扫描了数以千计的文档,原因我不知道它是什么是
有谁能解释一下发生了什么事?