2

埋め込まれたページングの状況に関連する古い質問を確認しました。スライスを使用した埋め込みページングは​​正常に機能しますが、ページ全体のソリューションがまだ不足しているため、サーバー側でコメントの合計サイズを取得できるかどうか疑問に思います。

ドキュメント全体をアプリにフェッチして手動でカウントすることなく、サーバーに埋め込まれた配列のサイズをクエリまたはカウントする方法はありますか?

これに対して2つのクエリを実行してもかまいません。1つはコメントのページング用、1つはコメントの合計を取得するためのものです。1つのクエリでこれを実行できれば、それは驚くべきことです。

ちなみに、私はjavaドライバーとspring-datamongodbを使用しています。

あなたの考えを共有してください。ありがとう !

4

1 に答える 1

5

埋め込まれたドキュメントの総数を取得するための最良/最速の方法は、追加のフィールドを作成し、更新/挿入のたびにカウントを再計算することです。ドキュメントは次のようになります

{
  _id: 1,
  comments: [],
  commentsCount: 5
}

次に、commentsCountスライスを実行するときにフィールドを含めることができます。

//this query will include only 10 comments _id and comments count of root document
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1}) 

そして実際には、埋め込まれたドキュメントの総数を計算する他の方法はありません(リアルタイムのリクエストでは遅いため、m / rについては話していません)

于 2012-02-16T15:48:51.467 に答える