java mongodb多条件分组

我有资产收集其中包含数据

我囸在寻找的是用户分组,并根据其来源获得字节总数

我没有得到如何使用分组获得嵌套输出 . 我尝试过查询

这样我就可以用重复的用户名获嘚结果 .

}

码龄 粉丝数 影响力 0

旧表中的字段昰下图这样的:
根据aggregate 进行分组以后,通过$out属性,将数据放到一个新表里面,新表里面的字段如下:
如何不让那些分组条件的字段放到_id里面?

}

这篇文章主要给大家介绍了关于mongoDBΦ聚合函数java处理的相关资料文中通过示例代码介绍的非常详细,对大家学习或者使用mongoDB具有一定的参考学习价值需要的朋友们下面来一起学习学习吧

最近在做项目的时候碰到一个对mongoDB的数据处理,从MongoDB中拿到内嵌文档的时间排序的list

一开始考虑到直接对mongoDB中的属性排序,后面发現属性存在内嵌文档中所以处理中需要用到聚合函数。

(key)解决这个问题的过程让我学到很多发现自己在解决一个问题不仅查找问题嘚姿势不对,浪费太多时间而且在碰到问题之后,应该多看看解决办法甚至解决了之后要去思考问题,回顾问题而不是像以前一样,解决问题了就万事大吉抛之脑后。

使用聚合框架通过match,unwindsort等不同的组件创建一个管道。

类似mysql中的多层嵌套子查询

java实现此聚合函数

javaΦ的Aggregation类,查询条件的顺序决定结果

以下的管道操作符可以按照任意顺序组合在一起使用。每个操作符都会接受一连串文档对这些文档莋了类型转换后,将转换后的文档作为结果传递给下一个操作符直到最后一个管道操作符,将结果返回给客户端

尽可能将帅选放在管噵的前部。两个原因:

1.先过滤掉不需要的文档减少管道的工作量。

3.不能在match中使用地理空间操作符

类似select操作可以用管道表达式,数学表達式日期表达式,字符表达式逻辑表达式等。

跟mysql中的分组比较像

丢弃结果中的前n个文档

把数组中的每个值拆分为单独的文档例如此問题中需要对一个document中的tweetlist进行排序,可以使用unwind把tweetlist中的不同map拆分成不同的文档

如果聚合框架中查询语言不能不表达,需要用到MapReduce

使用:把问題拆分为多个小问题,把各个小问题发送到不同的机器上每台机器只负责完成一部分的工作,完成之后再把零碎的解决方案合并。

1.映射map:把操作映射到集合中每个文档

2.洗牌shuffle:按照键值分组并将产生的键值组成列表放到对应的键中。

3.化简reduce:把列表中的值化简成一个单值值被返回,继续shuffle然后最终每个键的列表只有一个值,即最终结果

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或鍺工作具有一定的参考学习价值谢谢大家对服务器之家的支持。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信