MongoTemplate之MapReduce与Aggregation聚合

前言:

基于springboot、MongoTemplate进行练习MongoDB相关查询、聚合等功能学习。

1、项目配置

依赖

MongoTemplate之MapReduce与Aggregation聚合

POM.xml依赖

Mongodb数据库配置

MongoTemplate之MapReduce与Aggregation聚合

application.properties

然后直接引用MongoTemplate,基于springboot的MongoDB就这么吊,没有其他繁琐的xml配置

MongoTemplate之MapReduce与Aggregation聚合

2、数据准备

MongoTemplate之MapReduce与Aggregation聚合

loginfo集合

MongoTemplate之MapReduce与Aggregation聚合

student集合

MongoTemplate之MapReduce与Aggregation聚合

stu_class集合

3、MongoDB全文搜索查询

创建索引,基于TextCriteria查询

MongoTemplate之MapReduce与Aggregation聚合

4、借助 ReduceFunction查询统计

数据准备:

通过 reduceFunction 对每个文档数据进行操作,

MongoTemplate之MapReduce与Aggregation聚合

MongoTemplate之MapReduce与Aggregation聚合

5、基于Map-Reduce计算

Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。

MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。Map 函数必须调用 emit(key, value) 返回键值对。

MongoTemplate之MapReduce与Aggregation聚合

6、MongoDB聚合管道

  1. $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  2. $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  3. $limit:用来限制MongoDB聚合管道返回的文档数。
  4. $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  5. $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  6. $group:将集合中的文档分组,可用于统计结果。
  7. $sort:将输入文档排序后输出。
  8. $geoNear:输出接近某一地理位置的有序文档。

Aggregation aggregation = Aggregation.newAggregation();

--------

基于mongoTemplate.aggregate(aggregation, "集合名", BasicDBObject.class);

a、分组group、排序sort

MongoTemplate之MapReduce与Aggregation聚合

b、匹配搜索match、拆分unwind、分组group

MongoTemplate之MapReduce与Aggregation聚合

c、匹配搜索match、拆分unwind、分组group、重定义project

MongoTemplate之MapReduce与Aggregation聚合

d、两个集合关联查询 Aggregation.lookup

若 A集合关联B集合

参数: from B集合名

localField A集合存外键的字段

foreignField B集合与A集合关联的字段

as 重新组合成C集合名称

MongoTemplate之MapReduce与Aggregation聚合

7、位置查询

Circle 、within

MongoTemplate之MapReduce与Aggregation聚合

Point 、geoNear

MongoTemplate之MapReduce与Aggregation聚合

总结:学习摘录于官网及网络文章,有示例相似处像原作者致敬,有不足之处欢迎指正交流!!!


分享到:


相關文章: