3

グリッドにフィルターとページネーションを適用するノード プロジェクトに取り組んでいます。

見つかったアイテム、クエリから見つかった合計、および Mongodb コレクション内の合計アイテムが必要です。

私のクエリは(coffeescript)のようなものです:

projects.find(query).limit(10).skip(skip).select(q).exec (err, items) ->
      projects.count().exec (err, count) ->
        itemsTotals = count
        itemsFound = items.length

ただし、クエリが「制限」変数よりも大きい結果を返す場合、見つかったアイテムの数が制限であるため、3 つ目のクエリを追加するか、集計フレームワークを直接使用します。

2 つのクエリ (projects.find と projects.count) は本当に必要ですか?

単一のマングース クエリで 2 つの値 (見つかった合計とコレクションの合計) を取得することは可能ですか (また、返されるアイテムの結果をクエリで直接制限することもできます)。

4

2 に答える 2

3

私はまだより良い答えを見つけていませんが、言及する価値のあるこのオプションを見つけました。明らかな欠点は、DB がより大きなデータセットを返すことです。

projects.find(query).select(q).exec (err, items) ->
    itemsTotals = items.length
    items = items.slice(skip, 10 + skip)
    itemsFound = items.length

ここでこれを見つけました

于 2015-07-02T14:35:34.003 に答える
1

できません。limit と count() を指定して find() を実行する必要がありますが、クエリの数が重複していることを考慮すると、システムの速度が低下します。count() を実行する代わりに、合計の長さをメモリに保存し、insert() を実行するときにアトミックにインクリメントすることができます。サーバーが起動したら、 count() を実行して変数を初期化します。

于 2013-03-30T11:42:59.323 に答える