Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一个查询中使用2$count_Python_Mongodb - Fatal编程技术网

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
    键入
    并获取计数
  • $group
    按null设置,并以键值格式构造
    类型
    和计数的数组
  • $arrayToObject
    将上面的键值数组转换为对象
  • $replaceRoot
    将上面转换的对象替换为root

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" } } }
])