2015-08-20 183 views
0

我有一個名爲test的集合。我希望獲得test集合中存在的所有文檔的總金額:sal

下面是示例文件:

[ 
    { 
    "name": "hari", 
    "sal": "100", 
    "status": "Y", 
    "address": "Bangalore" 
    }, 
    { 
    "name": "Sam", 
    "sal": "200", 
    "status": "Y", 
    "address": "Bangalore" 
    }, 
    { 
    "name": "Nik", 
    "sal": "200", 
    "status": "N", 
    "address": "Bangalore" 
    } 
] 

,我嘗試以下查詢:

db.getCollection('test').aggregate([{ 
    $match: { 
    Status: "Y" 
    } 
}, { 
$group: { 
    _id: null, 
    total: { 
     $sum: "$sal" 
    } 
    } 
}]) 

我越來越爲零。

任何人都可以給我建議的權利查詢到所有的文件集合中添加特定的鍵。

+2

可能重複[如何在MongoDB中總金額獲得總計數?(http://stackoverflow.com/questions/17044587/how-to-aggregate-sum-in-mongodb-to-get-a-total-count) – Yogesh

+0

這聽起來像你'SAL '字段實際上是一個字符串,或者至少不是一個數字,或者不存在。 –

+0

您的查詢乍一看看起來很正確,但可能不適合您的文檔。請發佈示例文檔。 – Philipp

回答

1

由於樣本文件中提到,

$sum只適用於的int,long和浮動。目前,沒有運營商將字符串解析爲數字,儘管這非常有用。您可以在蒙戈描述轉換存儲爲字符串中的所有數字字段做自己Mongo convert all numeric fields that are stored as string

您可以參考更多詳細信息,下面的回答: - MongoDB - Aggregate Sum

+0

使用此總額: $組: { totalAmount:{$ sum:{$ multiply: [「$ sal」,「$ quantity」]}} } –