【发布时间】:2012-08-08 18:51:18
【问题描述】:
所以我在我的数据库中有一个包含以下 shardkey 的集合:{cl:"yyyy-mm", user_id:N}
当我执行后续查询时
db.collection.find({ cl:"2012-03", user_id:{$in:users}, _id:{"$lt":new ObjectId('4f788b54204cfa4946000044')} }).sort({_id:-1}).limit(5).explain(true)
它给了我这个结果:
"clusteredType" : "ParallelSort",
"shards" : {
"set1/hostname.com:27018" : [
{
"cursor" : "BtreeCursor cl_1_user_id_1 multi",
"nscanned" : 21294,
"nscannedObjects" : 21288,
"n" : 5,
"scanAndOrder" : true,
"millis" : 1258,
"nYields" : 69,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : { ...
那么如何进行排序以使用索引然后我不需要扫描所有 21288 个文档,只需返回最后 5 个?
【问题讨论】:
-
您使用的是哪个版本的 MongoDB?由于以下原因,您可能会发现 2.2.0-rc0 在此查询上做得更好:jira.mongodb.org/browse/SERVER-5063
-
$in的“用户”示例值是多少?如果只搜索一个user_id,你能发布一个解释的结果吗?
标签: mongodb sorting indexing sharding