我需要找到每個恐怖系列的平均長度。
我有兩個集合系列和書籍,書籍屬于系列并且具有欄位長度,系列具有欄位“流派”。
系列
{
"_id": "61179c8d43400f31df195223",
"name": "serie1",
"book genre": Horror
},
{
"_id": "61179c8d43400f31df195223",
"name": "serie2",
"book genre": Romance
},
{
"_id": "61179c8d43400f31df195223",
"name": "serie3",
"book genre": Horror
},
{
"_id": "61179c8d43400f31df195223",
"name": "serie4",
"book genre": Horror
},
圖書
{
"_id": "61179c8d43400f31df195223",
"name": "book1",
"lenght": 100,
"serie": "serie1"
},
{
"_id": "61179c8d43400f31df195223",
"name": "book2",
"lenght": 10,
"serie": "serie3"
},
{
"_id": "61179c8d43400f31df195223",
"name": "book3",
"lenght": 900,
"serie": "serie3"
},
{
"_id": "61179c8d43400f31df195223",
"name": "book4",
"lenght": 300,
"serie": "serie1"
},
uj5u.com熱心網友回復:
你可以用一個非常標準的聚合來做到這一點,我在這里使用$lookup,$avg并$map實作最終結果:
db.series.aggregate([
{
$lookup: {
from: "books",
localField: "name",
foreignField: "serie",
as: "books"
}
},
{
$project: {
_id: 1,
name: 1,
"book genre": 1,
avg: {
"$ifNull": [
{
$avg: {
$map: {
input: "$books",
in: "$$this.lenght"
}
}
},
0
]
}
}
}
])
蒙戈游樂場
uj5u.com熱心網友回復:
詢問
- 查找每個型別的平均值,例如所有恐怖電影的平均長度
- 按型別分組
- 查找以獲取長度
- 找到平均值
*湯姆斯回答發現每個系列的平均值,如果你不想要那個,也許你想要這個?我不確定。如果您將預期的輸出發送給我們會有所幫助,我以為您也想要湯姆所做的事情。
測驗代碼在這里
series.aggregate(
[{"$group":{"_id":"$book genre", "series":{"$push":"$name"}}},
{"$lookup":
{"from":"books",
"localField":"series",
"foreignField":"serie",
"as":"series"}},
{"$set":
{"book genre":"$_id",
"_id":"$$REMOVE",
"avgTime":{"$avg":"$series.lenght"}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/384741.html
上一篇:Mongodb,使用選定的檔案值使用單個操作更新同一檔案中的欄位
下一篇:在搜索前使用其他聚合運算子
