だから私は次のシャードキーを持つ私のデータベースにコレクションを持っています: {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" : { ...
では、インデックスを使用するように並べ替えるにはどうすればよいでしょうか。最後の 5 を返すためだけに、21288 個のドキュメントすべてをスキャンする必要はありません。