对mongodb的aggregate管道用法的理解

       最近看了一些关于mongodb的教程,感觉很费力,尤其涉及到了一些复杂的操作。比如很多贴上了大段数据来描述样例、或者翻译了大段官方文档的文字,这些都让我感觉疲劳。下面我用自己写的一些话来描述我对mongodb聚合的理解:

注:<>用来标识变量(即里面的内容可以替换成其他),可以按照<>里面的单词的含义来理解下面的代码。

例子:假设你有一组数据,需要按照顺序做这些操作:筛选、分组、求和,你可以用如下代码实现: 

db.<collection_name>.aggregate([
{$match:key},
{$group:{_id:$<group_filed_name>, <dispaly_field_name>:{$first:<nonkey_name>}}},
{$group:{_id:null, <sum_name>:{$sum:$<sum_field_name>}}}
]).next().get('<sum_name>')
  • <key>表示用来筛选的关键字,它的里面结构形如
    {<key1_name>:<key1_value>, <key2_name>:<key2_value>, ...}
  • <group_filed_name>表示用来给数据分组的字段名称,其中_id是一个内置的关键字,在_id所在字段的值用来划分分组。
  • <display_field_name>表示最后输出的字段的名称,<nonkey_name>表示某个非关键字字段的名称
  • 在第二步分组操作做完显示的数据结构是这样的
    {_id:<group_field1_value>, <display_field1_name>:<nonkey_field1_name>}
    {_id:<group_field2_value>, <display_field2_name>:<nonkey_field2_name>}
    ...

     

  •  <sum_name>表示最后要显示的求和字段的名称,<sum_field_name>表示要求和的字段的名称,_id:null表示不分组,这里使用$group符号的原因是$sum必须在$group实现

  •  

    在求和之后数据的结构是这样的

     
    {_id:null,<sum_name>:<sum_value>}

     

      从上面的例子,我们不难看出mongodb的聚合管道操作它允许分组、求和、筛选等等不同的操作依次进行,从代码里面使用了”[]“这个列表操作符,可以想像mongodb的聚合操作就像python的列表一样依次进行读取、操作,而且聚合操作允许重复多次进行的相同的操作。因此,我认为不管多复杂的操作只要分成一些基本操作,都可以用mongodb的聚合操作实现。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mannuandeyangguang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值