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聚合

總結:學習摘錄於官網及網絡文章,有示例相似處像原作者致敬,有不足之處歡迎指正交流!!!


分享到:


相關文章: