MongoDB—获取集合中每个值的每个字段的计数摘要
我想获得集合中每个值的每个字段的计数摘要 示例: 集合可能包含以下文档架构和值:MongoDB—获取集合中每个值的每个字段的计数摘要,mongodb,aggregation-framework,pymongo,Mongodb,Aggregation Framework,Pymongo,我想获得集合中每个值的每个字段的计数摘要 示例: 集合可能包含以下文档架构和值: { shop: A, B, C, D fruits: banana, apple, kiwi region: north, south, west, east } 目标: 我希望得到一个单独的文档,每个值的计数如下: { shop: { A: 2, B: 5, C: 3, D: 1 }, fruits:
{
shop: A, B, C, D
fruits: banana, apple, kiwi
region: north, south, west, east
}
目标:
我希望得到一个单独的文档,每个值的计数如下:
{
shop: {
A: 2,
B: 5,
C: 3,
D: 1
},
fruits: {
banana: 3,
apple: 2,
kiwi: 1
}
...
}
mongo怎么可能做到这一点
谢谢你的帮助
以分离所有三个字段的结果$facet
$project
仅限字段shop
解构$unwind
数组shop
通过$group
获得计数购物
仅显示键为$project
和值为shop
count
- 处理其他两个数组
和
区域
将键值数组转换为对象格式$arrayToObject
db.collection.aggregate([
{
$facet: {
shop: [
{ $project: { shop: 1 } },
{ $unwind: "$shop" },
{ $group: { _id: "$shop", count: { $sum: 1 } } },
{ $project: { _id: 0, k: "$_id", v: "$count" } }
],
fruits: [
{ $project: { fruits: 1 } },
{ $unwind: "$fruits" },
{ $group: { _id: "$fruits", count: { $sum: 1 } } },
{ $project: { _id: 0, k: "$_id", v: "$count" } }
],
region: [
{ $project: { region: 1 } },
{ $unwind: "$region" },
{ $group: { _id: "$region", count: { $sum: 1 } } },
{ $project: { _id: 0, k: "$_id", v: "$count" } }
]
}
},
{
$project: {
shop: { $arrayToObject: "$shop" },
fruits: { $arrayToObject: "$fruits" },
region: { $arrayToObject: "$region" }
}
}
])