Никак не могу понять, что от меня хотят.
docs.mongodb.org/manual/reference/operator/meta/orderby/
Вроде как это все одинаково, однако, в одном случае используется индекс и сканируется 1 запись, в другом случае индекс не используется и сканируются все записи в коллекции:
db.user_event_collection.find().sort({created_at:-1}).limit(1).explain()
{
"cursor" : "BtreeCursor created_at_1 reverse",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"created_at" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "devel.local:27017"
}
db.user_event_collection.find({$query:{}, $orderby:{created_at:-1}}).limit(1).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 14723972,
"nscanned" : 14723972,
"nscannedObjectsAllPlans" : 14723972,
"nscannedAllPlans" : 14723972,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 10,
"nChunkSkips" : 0,
"millis" : 7846,
"indexBounds" : {
},
"server" : "devel.local:27017"
}
Почему так?