2016-11-29 11 views
1

配列の配列から合計を取得したいと思いますが、これまでのところ解決策が見つかりませんでした。Mongo合計配列インデックス

配列は次のようになり、私はすべての配列の合計を取得したいと思い、この配列でそう[2] Arrays

値私は$sumを使用してみました13317 + 4719.の合計値を取得する必要がありますが、私この場合、別の配列の内側にある2のインデックスを指す方法がわかりません。$median_sale_prices.2は機能しません。

答えて

1

あなたがちょうど配列要素を合計するあなたは、その後$sumアキュムレータ演算子内の式として$arrayElemAt演算子を使用することができた後$unwind演算子を使用して最初の配列フィールドをフラット化する必要があるかもしれません$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 
} 

あなたのケースに上記を適用することは簡単になります。 { のparseInt($ arrayElemAt:[ "$ median_sale_prices"、1])、 のparseInt($ arrayElemAt:

+0

もう一つは、なぜこれが可能 '' '$の乗算ではありません[ "$ median_sale_pricesは"、 2]) } '' '' –

+0

これは有効な集計フレームワーク演算子ではないため、単純にできません。 – chridam