[英]mongodb - aggregation - nested object
我運行聚合函數以返回最喜歡的項目,如下所示:
db.users.aggregate(
[
{ $unwind : "$favoriteItems" },
{ $group : { _id : "$favoriteItems" , number : { $sum : 1 } } },
{ $sort : { number : -1 } }
]
)
這是我的用戶收藏中的原型文件
{
"_id": "5a68a9308117670afc3522cd",
"username": "user1",
"favoriteItems": {
"5a0c6711fb3aac66aafe26c6": {
"_id": "5a0c6711fb3aac66aafe26c6",
"name": "item1",
},
"5a0c6b83fd3eb67969316dd7": {
"_id": "5a0c6b83fd3eb67969316dd7",
"name": "item2",
},
"5a0c6b83fd3eb67969316de4": {
"_id": "5a0c6b83fd3eb67969316de4",
"name": "item3"
}
}
}
但是,聚合函數將favouriteItems計為一個項目,並返回與favouriteItems中的元素相對的每個favouriteItems計數。 我在聚合函數中缺少什么?
您可以嘗試下面3.4中的匯總。 因此, $unwind
在數組上而不在文檔上起作用。
因此,使用$objectToArray
將對象轉換為鍵值對數組。
db.users.aggregate([
{"$addFields":{"favoriteItems":{"$objectToArray":"$favoriteItems"}}},
{"$unwind":"$favoriteItems"},
{"$group":{"_id":"$favoriteItems.k","number":{"$sum":1}}},
{"$sort":{"number":-1}}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.