集約フレームワークを使用できます:
> db.prabir.aggregate(
{ $unwind : "$comments" },
{ $group: {
_id: '',
count: { $sum: 1 }
}
})
{ "result" : [ { "_id" : "", "count" : 8 } ], "ok" : 1 }
簡単に言うと、これは(一時的に)コメントごとに個別のドキュメントを作成し、ドキュメントごとに増分count
します。
投稿やコメントの数が多い場合は、コメントの数を追跡する方が効率的
かもしれません。コメントが追加されるたびに、カウンターもインクリメントします。例:
// Insert a comment
> comment = { name: 'JohnDoe', comment: 'FooBar' }
> db.prabir.update(
{ post: "A" },
{
$push: { comments: comment },
$inc: { numComments: 1 }
}
)
集約フレームワークを再度使用する:
> db.prabir.aggregate(
{ $project : { _id: 0, numComments: 1 }},
{ $group: {
_id: '',
count: { $sum: "$numComments" }
}
})
{ "result" : [ { "_id" : "", "count" : 8 } ], "ok" : 1 }