2017-12-06 9 views
0

マイMongoDBのデータセットのnullを返し今、私はその行動値が1とサイレント値であるデータを見つける必要があり、このMongoDBのソートではなく、データ

{ 
    "_id" : ObjectId("5a27cc4783800a0b284c7f62"), 
    "action" : "1", 
    "silent" : "0", 
    "createdate" : ISODate("2017-12-06T10:53:59.664Z"), 
    "__v" : 0 
} 

のようなものです0もう一つは、すべてのデータを返すということです注文が降順です。 私のMongoDBのクエリは、以前のそれは私のために正常に動作しますが、今、私はこのコレクションに121000のエントリを持って

db.collection.find({'action': 1, 'silent': 0}).sort({createdate: -1}).exec(function(err, post) { 
      console.log(post.length); 
}); 

です。今度はnullを返します。

I know there is some confusion on .sort() 

私がソートクエリを削除した場合、すべて正常です。例

db.collection.find({'action': 1, 'silent': 0}).exec(function(err, post) { 
      console.log(post.length);// Now it returns data but not on Descending order 
}); 

答えて

1

MongoDBの限界を、それがインデックスなしでソートしようとするデータの量。 これは、Mongoがメモリやディスク上のデータをソートしなければならないためです。

  • ほとんどの場合、これは並べ替えるフィールドにインデックスを作成することで軽減できます。

あなたがインデックスを作成することができます -

db.myColl.createIndex({ createdate: 1 }) 

感謝!

+0

特定のフィールドにインデックスを作成するにはどうすればよいですか?私の場合、どのように私はインデックスを作成することができます –

+0

私はanserで与えている同じ構文を使用することができます、ちょうどあなたが私が思うには、あなたがフィールドを変更することができます "createdate"あなたの要求に従ってあなたが操作している名前。 –

+0

"createdate"フィールドにインデックスを作成した後にチェックしてください。 –

関連する問題