2017-05-21 76 views
0
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); 
    }); 

架構骨料操作來爲空MongoDB中

{ 
     "store_id" : "BST000433", 
     "strProductCode" : "9000000064775", 
     "dblMRP" : 25, 
     "intProductQty" : 1, 
} 

我initailized這些字段(intProductQty,dblMRP,strPurchasePrice),爲整數。但是當我執行上述命令時,我將這三個值(stockAmount,purchaseAmount,storeValue)設爲null。

+0

您可以更新您的帖子,包括你的模式和樣本文件? – JohnnyHK

回答

1

如果它仍然可能是一些這些值都沒有設置,你可以檢查它們是否爲空與$ifNull$match後,將它們設置爲0,這些計算在$project步:

$project: { 
    intProductQty: { $ifNull: [ "$intProductQty", 0 ] }, 
    dblMRP: { $ifNull: [ "$dblMRP", 0 ] }, 
    strPurchasePrice: { $ifNull: [ "$strPurchasePrice", 0 ] } 
}, 

另外,我想這不是你的情況,但你可以過濾掉那些沒有數字與$type

$match: { 
    intProductQty: { $type: "number" }, 
    dblMRP: { $type: "number" }, 
    strPurchasePrice: { $type: "number" } 
},