在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何在mongoDB中利用java处理聚合函数

144次阅读
没有评论

共计 2103 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

本篇文章给大家分享的是有关如何在 mongoDB 中利用 java 处理聚合函数,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

需要对 document 中的一个 tweet_list 集合中的一个属性 timestamp_ms 进行排序。组内排序

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

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

mongoDB 中 js 代码

db.text.aggregate( // Initial document match (uses index, if a suitable one is available)
 [
 { $match: { _id : ObjectId( 5ca95b4bfb60ec43b5dd0db5)
 }},
 // Expand the scores array into a stream of documents
 { $unwind:  $tweet_list  },
 
 { $match: {
  tweet_list.timestamp_ms :  1451841845660 
 }},
 // Sort in descending order
 { $sort: {
  tweet_list.timestamp_ms : 1
 }}
 ]
)

java 实现此聚合函数

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

Aggregation agg = Aggregation.newAggregation( Aggregation.match(Criteria.where( _id).is(id)),
 Aggregation.unwind(tweet_list),
 Aggregation.sort(Sort.Direction.ASC, tweet_list.timestamp_ms),
 Aggregation.project(tweet_list.timestamp_ms , tweet_list.text , tweet_list.created_at)
AggregationResults JSONObject  results = mongoTemplate.aggregate(agg,  text , JSONObject.class);
//System.out.println(results +results.getRawResults()); // 获取到的结果是 document
//String res = results.getRawResults();
String json = com.mongodb.util.JSON.serialize(results.getRawResults());
System.out.println(JSON serialized Document:   + json);
JSONObject jso= JSON.parseObject(json);
JSONArray resultss=jso.getJSONArray( results 
System.out.println(resultss);

3. 扩展

管道 pipeline

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

筛选 match

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

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

2. 如果在 project 和 group 之前执行 match,查询可以用索引。

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

投射 project

类似 select 操作??梢杂霉艿辣泶锸?,数学表达式,日期表达式,字符表达式,逻辑表达式等。

分组 group

跟 mysql 中的分组比较像

排序 sort

1 升序 -1 降序

限制 limit

限制结果条数

跳过 skip

丢弃结果中的前 n 个文档

拆分 unwind

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

结果返回

文档

如何在 mongoDB 中利用 java 处理聚合函数

MapReduce

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

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

步骤:

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

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

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

以上就是如何在 mongoDB 中利用 java 处理聚合函数,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2103字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产av无码专区亚洲av麻豆丫 | 边啃奶头边躁狠狠躁玩爽在水里面 | 太大太粗太硬好爽受不了视频 | 日韩高清不卡在线 | 成人亚洲欧美日韩中文字幕 | 中文字幕亚洲欧美日韩在线不卡 | 久久精品成人 | 熟女视频一区二区在线观看 | 亚洲日韩欧美一区二区三区在线 | 啪啪黄色| 91精品在线免费观看 | 亚洲第一成年网 | 免费能直接在线观看黄的视频 | 在办公室被c到呻吟的动态图 | 刮伦真实在线永久视频 | 日本免费大片免费视频 | 国产精品国产三级国产av中文 | 国产精品原创永久在线观看 | 久草久爱 | 成人欧美视频在线观看播放 | 日韩精品无码一区二区 | 熟女体下毛毛黑森林 | 欧美一级毛片免费网站 | 99久久久国产精品免费无卡顿 | 亚洲精品午夜久久久伊人 | 欧美在线中文字幕 | 欧美日韩一道本 | 全部免费毛片在线 | 麻豆精品视频在线 | 国产精品毛片av999999 | 成人a级毛片免费观看 | 国精产品一区二区三区 | 在线视频日韩欧美 | 日韩欧美成人免费中文字幕 | 爱爱小视频日本 | 亚洲日韩一页精品发布 | 欧美成人精品三级网站 | 成人在线视频免费观看 | 视频一区欧美 | 99精品热这里只有精品 | 综合 欧美 亚洲日本 |