Inventors
.aggregate([{
$match: filter
},
{
$group: {
"_id": {
"store_id": "$store_id"
},
stockAmount: {
$sum: {
$multiply: ["$intProductQty", "$dblMRP"]
}
},
storeValue: {
$sum: "$intProductQty"
},
}
},
])
.exec(function(err, stock) {
return res.send(stock);
});
模式
{
"store_id" : "BST000433",
"strProductCode" : "9000000064775",
"dblMRP" : 25,
"intProductQty" : 1,
}
我将这些字段(intProductQty,dblMRP,strPurchasePrice)作为整数进行了初始化。但是当我执行上面的命令时,我得到三个值(stockAmount,purchaseAmount,storeValue)为null。
答案 0 :(得分:1)
如果仍然可能没有设置其中某些值,您可以检查它们是否为$ifNull
为空,并在$project
步骤后$match
步中将这些值设置为0 1}}:
$project: {
intProductQty: { $ifNull: [ "$intProductQty", 0 ] },
dblMRP: { $ifNull: [ "$dblMRP", 0 ] },
strPurchasePrice: { $ifNull: [ "$strPurchasePrice", 0 ] }
},
此外,我想这不是你的情况,但你可以用$type
过滤掉非数字的那些:
$match: {
intProductQty: { $type: "number" },
dblMRP: { $type: "number" },
strPurchasePrice: { $type: "number" }
},