前言:
基於springboot、MongoTemplate進行練習MongoDB相關查詢、聚合等功能學習。
1、項目配置
依賴
![MongoTemplate之MapReduce與Aggregation聚合](http://p2.ttnews.xyz/loading.gif)
POM.xml依賴
Mongodb數據庫配置
![MongoTemplate之MapReduce與Aggregation聚合](http://p2.ttnews.xyz/loading.gif)
application.properties
然後直接引用MongoTemplate,基於springboot的MongoDB就這麼吊,沒有其他繁瑣的xml配置
2、數據準備
loginfo集合
student集合
stu_class集合
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 的文章