Bạn có thể sử dụng khung tổng hợp để nhận doanh số bán hàng và lợi nhuận và bất kỳ giá trị nào khác mà bạn có thể đang lưu trữ trong biểu diễn cặp khóa / giá trị của mình.
Đối với dữ liệu mẫu của bạn:
var pipeline = [
{
"$unwind" : "$finance"
},
{
"$group" : {
"_id" : "$finance.k",
"numberOf" : {
"$sum" : 1
},
"total" : {
"$sum" : "$finance.v.v"
}
}
}
]
R = db.tb.aggregate( pipeline );
printjson(R);
{
"result" : [
{
"_id" : "profit",
"numberOf" : 2,
"total" : 246246
},
{
"_id" : "sales",
"numberOf" : 2,
"total" : 468000
}
],
"ok" : 1
}
Nếu bạn có các cặp k / v bổ sung thì bạn có thể thêm một đối sánh chỉ chuyển qua k giá trị trong ["doanh số bán hàng", "lợi nhuận"].