Python 在一个查询中使用2$count
我有以下收藏:Python 在一个查询中使用2$count,python,mongodb,Python,Mongodb,我有以下收藏: {'user': 'Emma', 'type': 'Apple'} {'user': 'Emma', 'type': 'Orange'} {'user': 'Emma', 'type': 'Orange'} 我想得到“Emma”的统计数据,“苹果”和“橙子”的记录有多少 例如,输出: { 'apple': 1, 'Orange': 1 } 如果我把它分成两个查询,那么做起来非常简单。但为了提高效率,我想一次完成这一切 我想知道我是否应该使用$facet $ma
{'user': 'Emma', 'type': 'Apple'}
{'user': 'Emma', 'type': 'Orange'}
{'user': 'Emma', 'type': 'Orange'}
我想得到“Emma”的统计数据,“苹果”和“橙子”的记录有多少
例如,输出:
{
'apple': 1,
'Orange': 1
}
如果我把它分成两个查询,那么做起来非常简单。但为了提高效率,我想一次完成这一切
我想知道我是否应该使用$facet
用户条件$match
按$group
并获取计数键入
按null设置,并以键值格式构造$group
和计数的数组类型
将上面的键值数组转换为对象$arrayToObject
将上面转换的对象替换为root$replaceRoot
db.collection.aggregate([
{ $match: { user: "Emma" } },
{
$group: {
_id: "$type",
count: { $sum: 1 }
}
},
{
$group: {
_id: null,
types: { $push: { k: "$_id", v: "$count" } }
}
},
{ $replaceRoot: { newRoot: { $arrayToObject: "$types" } } }
])