Aggregation Pipeline之二——操作符

操作符

我们将聚合过程中用到的各种操作符号以表格的形式归纳如下:

聚合操作符


注:[1] 一定要在project之前尽量完成数据过滤,这时是能使用索引的。一旦执行project后,由于字段被重新映射,将不能再走索引。

[2] 基于多列分组格式:{"$group":{"_id":{"state":"$state","city":"$city"}}};

    针对sharding进行分组运算时,是现在各分片上分组,然后汇总到mongos上进行最后的分组。之后的其它聚合操作都在mongos上进行,而不是各分片上。

[3] 针对sharding时,同理于$group操作。$sort是一个消耗资源的操作。

[4] 当要跳过的数量较大时效率较低。

 

附表一:$project中用到的操作符号



附表二:$group中用到的操作符号


注:[1] 当数据是无序的时,用$max和$min的效率高些;当数据有序时,用$first和$last效率高些。

    [2] $addToSet向集合插入数据时,不能重复,并且不保证顺序;$push插入的数据可以重复。其实$addToSet操作的是集合,集合的定义就是不能重复,而$push操作的是数组,数组是可以包含重复元素的。

-----------------------------------------------------------------------------

本文在写作过程中主要参考了下面的资料,这里对作者表示诚挚的感谢!


评论
热度(1)

© 听雨残荷 | Powered by LOFTER