Có một số cách để tiếp cận điều này tùy thuộc vào lượng dữ liệu bạn cần xử lý. Bạn có thể sử dụng Khung Tổng hợp trong MongoDB 2.2+ hoặc có thể Bản đồ / Thu nhỏ . Xem So sánh các lệnh tổng hợp để biết tóm tắt về các tính năng và hạn chế.
Đây là một ví dụ sử dụng Khung tổng hợp:
db.fruit.aggregate(
// Limit matching documents (can take advantage of index)
{ $match: {
"_id" : ObjectId("52c1d909fc7fc68ddd999a73")
}},
// Unpack the question & answer arrays
{ $unwind: "$questions" },
{ $unwind: "$questions.answers" },
// Group by the answer values
{ $group: {
_id: "$questions.answers.answer",
count: { $sum: 1 }
}}
)
Đối với tài liệu mẫu của bạn, điều này trả về:
{
"result" : [
{
"_id" : "banana",
"count" : 1
},
{
"_id" : "apple",
"count" : 2
}
],
"ok" : 1
}