前言:
基于springboot、MongoTemplate进行练习MongoDB相关查询、聚合等功能学习。
1、项目配置
依赖
Mongodb数据库配置
然后直接引用MongoTemplate,基于springboot的MongoDB就这么吊,没有其他繁琐的xml配置
2、数据准备
3、MongoDB全文搜索查询
创建索引,基于TextCriteria查询
4、借助 ReduceFunction查询统计
数据准备:
通过 reduceFunction 对每个文档数据进行操作,
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) 返回键值对。
6、MongoDB聚合管道
- $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
- $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
- $limit:用来限制MongoDB聚合管道返回的文档数。
- $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
- $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
- $group:将集合中的文档分组,可用于统计结果。
- $sort:将输入文档排序后输出。
- $geoNear:输出接近某一地理位置的有序文档。
Aggregation aggregation = Aggregation.newAggregation();
--------
基于mongoTemplate.aggregate(aggregation, "集合名", BasicDBObject.class);
a、分组group、排序sort
b、匹配搜索match、拆分unwind、分组group
c、匹配搜索match、拆分unwind、分组group、重定义project
d、两个集合关联查询 Aggregation.lookup
若 A集合关联B集合
参数: from B集合名
localField A集合存外键的字段
foreignField B集合与A集合关联的字段
as 重新组合成C集合名称
7、位置查询
Circle 、within
Point 、geoNear
总结:学习摘录于官网及网络文章,有示例相似处像原作者致敬,有不足之处欢迎指正交流!!!
閱讀更多 碼農筆記Day 的文章