2016-07-06 3 views
1
User.find({job:"developer",sick:1},callback); 

上記のクエリは私に配列オブジェクトの数を与えましたが、私はそれの長さが必要です。私はUser.count({job:"developer",sick:1},callback);を試しても動作しません。返された配列のマングースカウント数?

私はネイティブ.LENGTHネイティブ関数を使用することができます知っているが、私は私のクエリを最適化するために数()を使用します。

答えて

0

あなたは(Jasch1 @)一部のユーザーがこれを使用することをお勧めします

User.count({job:"developer",sick:1}, function(err, count) { 
    console.log(count); 
}); 

.LENGTH使用したくない場合だけcount機能を使用します。

Song.find({job: 'developer'}, {sick: 1}, function(err, docs){ 
    var length = docs.length; 
    console.log(length); 
}) 

.count戻っていることを覚えておくべきしかし一つのことをあなたが大きなコレクションを持っている場合、.findは実際に実際のデータを返します。これは非常に非効率的です。

+0

これを試してみましたが動作しません – Rachel

+0

@Rachel okはこの作業を行いますか? User.find({job: "developer"、sick:1}、function(err、items){console.log(items)}); – Tim

3

私はそれがこのようなものになると思います。

var query = {job:"developer",sick:1}; 
User.count(query, function(err, count) { 
    if(err) console.log(err); 
    console.log(count); 
}); 

返されるドキュメントを使用するかどうかによって、より良い方法は.lengthを使用することです。しかし、スピードのためにこれをやっているだけなら、おそらくカウントが良いでしょう。

.count().LENGTHがかかりますしながら、唯一、完全なクエリを作成し、ドキュメントをロードせずに長さを返します

User.find({job: 'developer'}, {sick: 1}, function(err, docs){ 
    var length = docs.length; 
    console.log(length); 
}) 

違いを:.LENGTHでそれを行うには

返された配列と長さを取得すると、データベースに格納されている内容によっては時間がかかることがあります

+0

このような記述をする前に、Mongoose Doc(http://mongoosejs.com/docs/api.html#model_Model.count)を読んでください。 – Tim

+0

私はあなたの方法がうまくいくことを知っています、それはちょうどそれを行う最良の方法ではありません – Jasch1

+0

よくあなたのメソッドは、単純な事実mongoose非同期フレームワークとあなたの長さがnullになるために働くことはありません – Tim

関連する問題