{
"_id"/span> : {
"state"/span> : "NY"/span>,
"st" : "value".
},
"List" : [
{
"id"/span> : "21"/span>,
" score" : 18.75,
"name" : "PU"。
},
{
"id" : "21"。
" score" : 25.0,
"name" : "PU".
},
{
"id" : "23"。
" score" : 25.0,
"name" : "CL".
},
{
"id" : "23"。
" score" : 56.25,
"name" : "CL".
}
]
}
期望的結果:
匹配陣列中的鍵和id,并計算出分數的平均值。
{
"_id"/span> : {
"state" : "New York"。
"st" : "value".
},
"List" : [
{
"id"/span> : "21"/span>,
" score" : 21.875,
"name" : "PU".
},
{
"id" : "23"。
" score" : 40.625,
"name" : "CL".
}
]
}
預先感謝你。
uj5u.com熱心網友回復:
Query
(回傳預期的結果)
- unwind串列
- 用包括id在內的分組,并找到avg 。
- 修復結構,使之與你想要的檔案相似 。
- 組回,以恢復檔案結構(反向解卷) 。
- 如果2個相同的ID有不同的名字(如果可能發生)。 查詢將使它們在陣列中成為獨立的成員。 (另外,它可以使它們成為同一個成員,并將名字打包到一個陣列中,但這將產生與你期望看到的不同的模式) 。
db.collection.aggregate( [
{
"$unwind"/span>: {
"path": "$List": "path".
}
},
{
"$group": {
"_id": {
"state": "$_id.state",
"st": "$_id.st",
"id": "$List.id",
"name": "$List.name".
},
"avg": {
"$avg": "$List.score": "$avg".
}
}
},
{
"$project": {
"_id": {
"state": "$_id.state",
"st": "$_id.st".
},
"List": {
"name": "$_id.name",
"id": "$_id.id",
"avg": "$avg", "avg".
}
}
},
{
"$group": {
"_id": "$_id",
"List": {
"$push": "$List": "$push".
}
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324690.html
標籤:
上一篇:控制臺記錄陣列中專案的值
