2016-11-29 193 views
1

我想從數組中獲取總和,但到目前爲止我還沒有找到任何解決方案。Mongo sum數組索引

的陣列這個樣子,我想獲得的所有陣列的總和值[2] Arrays

所以用這個陣我應該得到的13317 + 4719.總和值我嘗試使用$sum但我當它在另一個陣列的內部時不知道如何指向2 - 在這種情況下,$median_sale_prices.2不起作用。

回答

1

您可能需要通過使用$unwind操作,之後就可以再使用$arrayElemAt操作者作爲表達所述$sum累加器操作者內求和只是在一個數組元素第一平坦化陣列字段$group流水線步驟。

概念可以用下面的例子來最好的解釋:

填充測試集

db.test.insert([ 
    { 
     "x": [ 
      [1, 1, 1], 
      [0, 1, 1], 
      [1, 0, 1], 
      [1, 1, 0], 
      [1, 0, 1], 
      [0, 1, 1] 
     ] 
    } 
]) 

運行聚集查詢

db.test.aggregate([ 
    { "$unwind": "$x" }, 
    { 
     "$group": { 
      "_id": null, 
      "total": { 
       "$sum": { 
        "$arrayElemAt": [ "$x", 2 ] 
       } 
      } 
     } 
    } 
]) 

樣本輸出

{ 
    "_id" : null, 
    "total" : 5 
} 

將上述應用於您的案例變得微不足道。

+0

一件事,爲什麼不是這可能 '''$乘法:{ parseInt函數($ arrayElemAt: 「$ median_sale_prices」,1]), parseInt函數($ arrayElemAt: 「$ median_sale_prices」 2]) }''' –

+0

這根本不可能,因爲它不是一個有效的聚合框架運算符。 – chridam