pymongo中group by的操作方法教程
导读:本文共2178字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 前言使用 pymongo 进行 group by 操作有两种基本方式,他们都是 mongodb 的原生命令,于 Collection 对象上调用。def aggregate(self, pipeline, **kwargs):def group(self, key, condition, initial, reduce, finalize=None, ... ...
目录
(为您整理了一些要点),点击可以直达。前言
使用 pymongo 进行 group by 操作有两种基本方式,他们都是 mongodb 的原生命令,于 Collection 对象上调用。
演示用的数据为一个订单表,含有以下字段:
Order
主要任务为:
即分别为:单键分组和多键分组
聚合操作只接受一个列表类型的参数 —— pipeline。其每一个元素都是一步操作(stage)。全部可用的 stage 可参见:
注意 pipline 里面的 stage 是有序且可重复的,mongodb 会顺序执行,因此一定要记得把像 $match 这样的 stage 放前面。
单键分组
$group 指定了返回数据的格式,其中 _id 字段是分组的键。
多键分组
这里与单键分组的区别仅在于 _id 的类型,改成了一个字典,从而允许多键组合。
为了提高通用性,建议始终使用字典的格式。
另外,既然字符串和字典都可以做键,那么列表行不行呢?答案是不行,列表里的元素,(如 '$userid') 并不会被自动识别为字段,而是仅作一般字符串处理。
最后关于 aggregate 中可用的运算操作符,可参见:
如其中的 $addToSet 也是颇有用处,可以用来实现 “统计每个人都买过哪些 itemid” 这样的功能:
相较于 aggregate 的全能,group 是专门处理分组操作的一个命令,因此这个方法的参数也更明确,主要参数为:
例:
这里的分组数据聚合,是通过 reduce 函数实现的,这个函数与 python 的 reduce 不同,它不需要返回值,而是直接修改 prev 参数即可,这个参数会自动代入下一次调用。这可能是 js 的实现。
须注意的是 js 默认返回浮点数。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
pymongo中group by的操作方法教程的详细内容,希望对您有所帮助,信息来源于网络。