私は、フォーム内のデータを持っている:MongoDBの合計を配列のデータに従って集計する方法
{
"_id": 1,
"array": [{
"who": "jon",
"whom": "max",
"point": 2,
"description": "la-la"
}]
} {
"_id": 2,
"array": [{
"Id": "jon",
"ToId": "peter",
"point": 3,
"description": "la-la"
}]
} {
"_id": 3,
"array": [{
"Id": "peter",
"ToId": "max",
"point": 2,
"description": "la-la"
}]
} {
"_id": 4,
"array": [{
"Id": "max",
"ToId": "peter",
"point": 3,
"description": "la-la"
}]
}
私はarrayコマンドからデータを取った:形式のデータ
{"ToId" : "peter", "pointCount" : 6}
{"ToId" : "max", "pointCount" : 4}
を取得する方法
db.game.aggregate([{$project: {_id: false, array: true}}, {$unwind: "$array"}])
{ "array" : { "Id" : "jon", "ToId" : "max", "pointCount" : 2, "description" : "la-la" } }
{ "array" : { "Id" : "jon", "ToId" : "peter", "pointCount" : 3, "description" : "la-la" } }
{ "array" : { "Id" : "peter", "ToId" : "max", "pointCount" : 2, "description" : "la-la" } }
{ "array" : { "Id" : "max", "ToId" : "peter", "pointCount" : 3, "description" : "la-la" } }
ありがとうございました。
あなたはToIdでグループ化して合計を計算するだけで済みます。 db.game.aggregate([{$ unwind: "$ array"}、{$ group:{"_ id": "$ array.ToId"、 "pointCount":{$ sum: "$ pointCount"}}}、{ $ project:{"_id":0、 "ToId": "$ _ id"、 "pointCount":1}}]) – Veeram
ありがとう、それは – Garazd