コレクション内のすべてのドキュメントを集約しているため、正しく機能していません。定数"_id": "tempId"
でグループ化しています 、 $
を追加して正しいキーを参照する必要があります として:
db.getCollection('myCollection').aggregate([
{ "$group": {
"_id": "$tempId",
"totalValue": {
"$sum": { "$sum": "$messages.data.value" }
}
} }
])
これは本質的に、グループパイプラインの前に合計式を保持し、そのフィールドを $ sum
グループ内の演算子。
上記は、 $ sum
以降に機能します。
MongoDB 3.2以降は、 の両方で利用できます。 $ project
および $ group
>
で使用する場合$ project
$ sum
式のリストの合計を返します。式"$messages.data.value"
数値のリストを返します[120、1200]
その後、 $ sum コード>
式:
db.getCollection('myCollection').aggregate([
{ "$project": {
"values": { "$sum": "$messages.data.value" },
"tempId": 1,
} },
{ "$group": {
"_id": "$tempId",
"totalValue": { "$sum": "$values" }
} }
])