各都市に最も多くの患者を持つ医師を表示する集約クエリを作成したいと考えています。それは各都市の平均年齢でも機能します。例えば各都市の患者数に基づいて医師の最高発生を見つける
:
{
City: "Vancouver"
Physician: "Physician Test1"
Average_Age: 56
},
{
City: "Burnaby"
Physician: "Physician Test2"
Average_Age: 40
}
私のデータの一部
{
"gender" : "Female",
"full_name" : "Test Patient",
"age" : 20,
"city" : "Burnaby",
"severity_code" : 2,
"PHN" : "11-1111111",
"primary_physician" : "Physician Test1",
"location" : "4A",
"attendance_method" : "Self-Driven"
},
{
"gender" : "Male",
"full_name" : "Test2 Patient2",
"age" : 68,
"city" : "Vancouver",
"severity_code" : 1,
"PHN" : "00-0000000",
"primary_physician" : "Physician Test2",
"location" : "6D",
"attendance_method" : "Walk-In"
}
の例は、どのように私は上記の集計クエリを作成するのですか? (上記の集約で
db.patients.aggregate([
{
"$group": {
"_id": {
"City": "$city",
"Physician": "$primary_physician"
},
"count": { "$sum": 1 },
"Average_Age": { "$avg": "$age" }
}
},
{ "$sort": { "count": -1 } },
{
"$group": {
"_id": "$_id.City"
"Physician": { "$first": "$_id.Physician" },
"Number_of_Patients": { "$first": "$count" },
"Average_Age": { "$first": "$Average_Age" }
}
}
])
、city
とphysician
フィールドによって$group
オペレーターグループ文書と第1パイプラインステップとドキュメントの数を計算します。
あなたが提供したクエリで$ sort:{count:-1}}が混乱しています。この集合体ではどのように機能しますか? –
'{" $ sort ":{" count ":-1}}のパイプラインステージは、以前にグループ化されたドキュメントをカウント(オカレンス)で並べ替えます。これは、各グループの各市町村に最も多くの患者を持つ医師を取得したいので、さらにグループ分けするために必要です。先行するパイプラインはこれを排除します。 – chridam