2012-02-16 19 views
2

埋め込みページングの状況に関連するan older questionをチェックアウトしました。スライシングによる埋め込みページングは​​正常に機能しますが、の合計ページの解決策はまだありません。サーバー側でコメントの合計サイズを取得できるかどうかは疑問です。埋め込みページングをmongodbで実装する

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

私はこのことについて2つの質問をしていますが、1つはコメントのページングに、1つはコメントの合計を得るために1つです。私は1つのクエリでこれを行うことができれば、それは素晴らしいだろう。

ところで、私はjavaドライバとspring-data mongodbを使用しています。

あなたの考えをお伝えください。ありがとう!

答えて

5

埋め込みドキュメントの総数を取得する最善の方法は、追加のフィールドを作成し、各更新/挿入後にカウントを再計算することです。

//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}) 

そして実際に埋め込まれた文書の合計数を計算するための他の方法がない(私は話していない午前: ドキュメントは、スライスをするとき、あなたは単にcommentsCountフィールドを含むことができ、この

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

のようになります約m/r、リアルタイム要求のため遅いので)

+0

あなたの答えは私にとっては頭に似ています。私は、非正規化と多くの場合のカウントを使用してきましたが、私はこの事例については考えていませんでした。ありがとうございました ! – bertie

+0

@ AlbertKam:非正規化はnosqlデータベースの親友です;) –

関連する問題