最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mongoDB中聚合函數(shù)java處理示例詳解

 更新時間:2019年04月16日 10:11:19   作者:VV不想說話  
這篇文章主要給大家介紹了關(guān)于mongoDB中聚合函數(shù)java處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mongoDB具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

1.問題

最近在做項目的時候碰到一個對mongoDB的數(shù)據(jù)處理,從MongoDB中拿到內(nèi)嵌文檔的時間排序的list。

一開始考慮到直接對mongoDB中的屬性排序,后面發(fā)現(xiàn)屬性存在內(nèi)嵌文檔中,所以處理中需要用到聚合函數(shù)。

思考

(key)解決這個問題的過程讓我學到很多,發(fā)現(xiàn)自己在解決一個問題不僅查找問題的姿勢不對,浪費太多時間。而且在碰到問題之后,應該多看看解決辦法,甚至解決了之后要去思考問題,回顧問題。而不是像以前一樣,解決問題了就萬事大吉,拋之腦后。

2.解決

需要對document中的一個tweet_list 集合中的一個屬性 timestamp_ms進行排序。 組內(nèi)排序

使用聚合框架,通過match,unwind,sort等不同的組件創(chuàng)建一個管道。

類似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實現(xiàn)此聚合函數(shù)

java中的Aggregation類,查詢條件的順序決定結(jié)果。

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()); //獲取到的結(jié)果是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

以下的管道操作符可以按照任意順序組合在一起使用。每個操作符都會接受一連串文檔,對這些文檔做了類型轉(zhuǎn)換后,將轉(zhuǎn)換后的文檔作為結(jié)果傳遞給下一個操作符。直到最后一個管道操作符,將結(jié)果返回給客戶端。

篩選match

盡可能將帥選放在管道的前部。兩個原因:

1.先過濾掉不需要的文檔,減少管道的工作量。

2.如果在project和group之前執(zhí)行match,查詢可以用索引。

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

投射project

類似select操作??梢杂霉艿辣磉_式,數(shù)學表達式,日期表達式,字符表達式,邏輯表達式等。

分組group

跟mysql中的分組比較像

排序sort

1 升序 -1 降序

限制limit

限制結(jié)果條數(shù)

跳過skip

丟棄結(jié)果中的前n個文檔

拆分unwind

把數(shù)組中的每個值拆分為單獨的文檔,例如此問題中需要對一個document中的tweetlist進行排序,可以使用unwind把tweetlist中的不同map拆分成不同的文檔。

結(jié)果返回

文檔

MapReduce

如果聚合框架中查詢語言不能不表達,需要用到MapReduce。

使用:把問題拆分為多個小問題,把各個小問題發(fā)送到不同的機器上,每臺機器只負責完成一部分的工作,完成之后,再把零碎的解決方案合并。

步驟:

1.映射map:把操作映射到集合中每個文檔

2.洗牌shuffle:按照鍵值分組,并將產(chǎn)生的鍵值組成列表放到對應的鍵中。

3.化簡reduce:把列表中的值化簡成一個單值,值被返回,繼續(xù)shuffle,然后最終每個鍵的列表只有一個值,即最終結(jié)果,

應用:

1.找到集合中所有鍵

2.網(wǎng)頁分類

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MongoDB分片鍵的選擇和案例實例詳解

    MongoDB分片鍵的選擇和案例實例詳解

    分片集群中良好的查詢性能都依賴于正確選擇分片鍵。下面這篇文章主要給大家介紹了關(guān)于MongoDB分片鍵的選擇和案例的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-05-05
  • 使用zabbix監(jiān)控mongodb的方法

    使用zabbix監(jiān)控mongodb的方法

    MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。通過本文給大家介紹使用zabbix監(jiān)控mongodb的方法,需要的朋友參考下
    2016-02-02
  • mongodb使用c#驅(qū)動數(shù)據(jù)插入demo

    mongodb使用c#驅(qū)動數(shù)據(jù)插入demo

    今天小編就為大家分享一篇關(guān)于mongodb使用c#驅(qū)動數(shù)據(jù)插入demo,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)

    MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)

    這篇文章主要介紹了MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)的相關(guān)資料,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB數(shù)據(jù)庫常用28條查詢語句總結(jié)

    MongoDB數(shù)據(jù)庫常用28條查詢語句總結(jié)

    我們經(jīng)常使用的MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),隨著時代的進步,互聯(lián)網(wǎng)的發(fā)展關(guān)系型數(shù)據(jù)庫已經(jīng)不滿足于互聯(lián)網(wǎng)的需求,因此出現(xiàn)了非關(guān)系數(shù)據(jù)庫,下面這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB數(shù)據(jù)庫常用28條查詢語句,需要的朋友可以參考下
    2023-05-05
  • MongoDB的chunk詳解

    MongoDB的chunk詳解

    這篇文章主要介紹了MongoDB的chunk的相關(guān)資料,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04
  • mongodb 修改器($inc/$set/$unset/$push/$pop/upsert)

    mongodb 修改器($inc/$set/$unset/$push/$pop/upsert)

    對于文檔的更新除替換外,針對某個或多個文檔只需要部分更新可使用原子的更新修改器,能夠高效的進行文檔更新。更新修改器是中特殊的鍵
    2017-04-04
  • mongodb 3.2.5安裝詳細過程

    mongodb 3.2.5安裝詳細過程

    這篇文章主要介紹了mongodb 3.2.5安裝過程詳細記錄,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • MongoDB條件操作符的具體使用

    MongoDB條件操作符的具體使用

    MongoDB的條件操作符主要分為比較操作符、邏輯操作符、元素操作符、數(shù)組操作符、文本搜索操作符等幾種類型,本文就詳細的介紹一下這幾種類型的操作,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • MongoDB 數(shù)據(jù)庫的命名、設(shè)計規(guī)范詳解

    MongoDB 數(shù)據(jù)庫的命名、設(shè)計規(guī)范詳解

    隨著MongoDB的普及和使用量的快速增長,為了規(guī)范使用,便于管理和獲取更高的性能,整理此文檔
    2020-02-02

最新評論

安阳市| 丽水市| 元阳县| 黄浦区| 乳源| 平塘县| 鸡泽县| 新野县| 罗山县| 建宁县| 呼玛县| 长寿区| 长治市| 庆云县| 阿克苏市| 黄龙县| 安平县| 海安县| 喀喇| 中山市| 广东省| 会宁县| 洞头县| 罗定市| 龙川县| 耒阳市| 汝州市| 黄石市| 襄樊市| 乡城县| 龙江县| 阿拉善左旗| 同德县| 涞水县| 册亨县| 府谷县| 阿坝县| 海南省| 光山县| 诸暨市| 汤原县|