2016-06-16 7 views
0

クエリに基づいてコレクション内のドキュメントの総数を取得する必要があります。私はこのコードを使用してDBから結果を取得しますが、これは配列を返してから、この配列の長さを抽出しますが、時には16Mbの制限があります。それでは、私が探していることは、私はこのために、サーバ側で流星を使用してこのコードを書いていることを言及するのを忘れ

var result; 
var pipeline =[ 
    { 
    "$match": { 
     "submission_time": { 
     "$gt": "Wed Jun 01 2016 00:00:00 GMT-0600 (CST)", 
     "$lt": "Wed Jun 15 2016 23:59:59 GMT-0600 (CST)" 
     } 
    } 
    }, 
    { 
    "$project": { 
     "account": 1, 
     "ru_msgsnd": 1, 
     "ru_minflt": 1, 
     "slots": 1, 
     "usage.cpu": 1, 
     "usage.mem": 1, 
     "submission_time": 1 
    } 
    } 
] 
result = collection_name.aggregate(pipeline); 
return result.length; 

このクエリでドキュメントの合計金額の整数を取得する方法ですコレクションは250,000以上のドキュメントです

あなたの助けをありがとう! :-)

+1

私はあなたのクエリに気付いたことは2つあります。日付は文字列として保存されます。文字列フィールドに対して比較演算子を使用すると、正確な精度が大幅に低下するため、適切な 'Date()'オブジェクトと比較して同じ結果が得られません。第2に、適切な日付では、 'count()'がちょうど良いことをするので、クエリのカウントを行う集約フレームワークは必ずしも必要ではありません。 – chridam

+0

こんにちは@chridamこれは単なる例です。私の実際のコードでは、Dateオブジェクトに '$ limit'を使用し、クエリは期待通りに動作します。その後、私は '$ limit'なしで実際の合計を得るためにコードを再利用しますが、この問題に遭遇します。 .count()の問題は、私が流星のアプリからこれをやっていることです。助けてくれてありがとう:-) –

答えて

0

公開カウントのためのパッケージtmeasday:publish-countsがあります。しかし、あなたのデータが大きい場合は推奨しません。

集計を使用する代わりに、パブリケーションを使用して数をパブリッシュする必要があります。カウント()hereを公開する例があります。これがあなたを助けることを願っています。

関連する問題