1
我有點卡在MongoDB的聚合框架中,看起來很簡單。Mongo Aggregation分組子文檔
想象一下,你有文件,將是這樣的:
[
{ a: 1, b: 2 },
{ a: 1, b: 3 },
{ a: 5, b: 6 }
]
- 你怎麼能組通過現場
a
文件,然後由另一場重組子文檔,說b
同時還計算總數每一步的文件?
在我們的例子中,結果看起來是下面的輸出文件:
{
results: [
{
_id: {
a: 1
},
sum_a: 2,
doc_a: [
{
_id: {
b: 2
},
sum_b: 1
},
{
_id: {
b: 3
},
sum_b: 1
}
]
},
{
_id: {
a: 5
},
sum_a: 1,
doc_a: [
{
_id: {
b: 6
},
sum_b: 1
}
]
}
]
}
我試過這樣的事情:
printjson(db.getSiblingDB('mydb').mycollection.aggregate([
{
$project: {
a: 1,
b: 1
}
},
{
$group: {
_id: {
a: '$a'
},
sum_a: {
$sum: 1
},
b: {
$first: '$b'
}
}
},
{
$group: {
_id: {
b: '$b'
},
sum_b: {
$sum: 1
}
}
},
{
$sort: {
sum_a: 1
}
}
]));
但在我做出了不同的測試,它使覆蓋以前的小組階段結果,錯誤地計算總和......等等。
所以我真的不知道如何解決這個問題。