希望你做得很好。
我在mongoDB中有一些这样的文件:
{_id:"someId", Fruits: ["mango", "orange", "mango", "orange", "orange", "apple"]
我想使用mongoDB聚合来获得以下输出:
{_id: "someId", Fruits: {mango: 2, orange: 3, apple: 1}
我尝试了很多方法,花了一些时间阅读文档,但仍然不知道如何使它工作。
你们能帮我吗?
答案 0 :(得分:0)
您可以使用以下汇总
db.collection.aggregate([
{ "$addFields": {
"Fruits": {
"$arrayToObject": {
"$map": {
"input": { "$setUnion": ["$Fruits"] },
"as": "m",
"in": {
"k": "$$m",
"v": {
"$size": {
"$filter": {
"input": "$Fruits",
"as": "d",
"cond": { "$eq": ["$$d", "$$m"] }
}
}
}
}
}
}
}
}}
])
[
{
"Fruits": {
"apple": 1,
"mango": 2,
"orange": 3
},
"_id": "someId"
}
]