我在使用MongoDb對數據進行分組時遇到問題。數組中的聚合總數
我有一些項目與一些進出運動,我想計算一個項目的總量與運動量,但運動不正確計算。
這裏是我的樣本數據,小的單子有兩股和一些運動....
/* 1 */
{
"TemplateName" : "SAALottoStagionatura",
"idStock" : 31789,
"idWarehouse" : 191,
"StockCode" : "71529902",
"Marks" : [
{
"idMark" : 20145,
"idWarehouse" : 191,
"idStock" : 31789,
"ProgressivoDocumento" : 486,
"Year" : 2016,
"RefDate" : ISODate("2016-03-28T22:00:00.000Z"),
"MarkedItems" : 72
},
{
"idMark" : 20156,
"idWarehouse" : 191,
"idStock" : 31789,
"ProgressivoDocumento" : 497,
"Year" : 2016,
"RefDate" : ISODate("2016-03-30T22:00:00.000Z"),
"MarkedItems" : 144
},
{
"idMark" : 23424,
"idWarehouse" : 191,
"idStock" : 31789,
"ProgressivoDocumento" : 840,
"Year" : 2016,
"RefDate" : ISODate("2016-06-12T22:00:00.000Z"),
"MarkedItems" : 3
}
],
"Details" : [
{
"idLSDetail" : 42781,
"idStock" : 31789,
"idStockOrig" : 54502,
"StockCode" : "71529902",
"Items" : 4532
}
],
"MovementsOut" : [
{
"idMovementDetail" : 633,
"idMovement" : 511,
"MovedItems" : 3528 ,
"idStockOrig" : null,
"idStock" : 31789
}
],
"MovementsIn" : [
{
"idMovementDetail" : 715,
"idMovement" : 570,
"MovedItems" : 3528,
"idStockOrig" : null,
"idStock" : 33678
}
]
}
/* 2 */
{
"TemplateName" : "SAALottoStagionatura",
"idStock" : 33678,
"idWarehouse" : 190,
"StockCode" : "71529902",
"Marks" : [],
"Details" : [
{
"idLSDetail" : 45206,
"idStock" : 33678,
"idStockOrig" : 56684,
"StockCode" : "71529902",
"Items" : 3528
}
],
"MovementsOut" : [
{
"idMovementDetail" : 715,
"idMovement" : 570,
"MovedItems" : 3528,
"idStockOrig" : null,
"idStock" : 33678
}
],
"TrasferimentiInEntrata" : []
}
,並在我的查詢我嘗試組運動
db.getCollection('Test')
.aggregate(
[
{$match: {"idWarehouse": 191, StockCode: "71529902" } },
{$unwind: "$Details"},
{$unwind: "$Marks"},
{$unwind: "$MovementsIn"},
{$unwind: "$MovementsOut"},
{
$group : {
_id : {
StockCode: "$idStock",
StockCode: "$StockCode"
},
tot: { $sum: "$Details.Items" },
cer: { $sum: "$Marks.MarkedItems" },
in: { $sum: "$MovementsIn.MovedItems" },
out: { $sum: "$MovementsOut.MovedItems" }
}
}
]
)
我的期望應該是這樣的
{
"_id" : {
"StockCode" : "71529902"
},
"tot" : 13596,
"cer" : 219,
"in" : 3528,
"out" : 7056
}
但是我總是得到運動的全部總和(10584)in and out。我在哪裏錯了?
非常清楚和完整的答案。非常感謝! – Grappachu