摘要:環境使用可以實現較為復雜的數據聚合操作,例如匯總去重匯總分組統計等。返回結果為數組,需要注意數據大小不能超過。的返回結果為游標,可循環取數。
環境aggregate
mongos 3.0.14
使用 aggregate 可以實現較為復雜的數據聚合操作,例如 匯總(count)、去重匯總(distinct count)、分組統計(group having)等。
aggregate 返回結果為數組,需要注意數據大小不能超過16M。
例如:
$pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["user_id"=>"$user_id"] ]], ["$group" => [ "_id" => "_id.user_id", "number" => ["$sum"=>1] ]] ]; $options = [ "allowDiskUse"=>true, "cursor"=>["batchSize"=>1] ]; $data = MongoSvc::get("user")->user_info->aggregate($pipeline,$options);aggregateCursor
對于大量返回結果的聚合,可以使用 aggregateCursor 返回游標,可以避免數據大小超限。
aggregateCursor 的返回結果為游標,可循環取數。
例如:
$pipeline = [ ["$match" => $matchArr], ["$project" => ["id"=>1,"_id"=>0]], ["$group" => [ "_id" => "$id", "count" => ["$sum" => 1] ]], ["$match" => [ "count" => ["$gt" => 1] ]] ]; //這里改為aggregateCursor用游標循環獲取 $data = MongoSvc::get("user")->user_info->aggregateCursor($pipeline);pipeline 參數
$match
條件匹配。
$addFields
增加新字段。
$count
該stage的文檔總數。
$group
分組。
$limit
限制數量。
$skip
跳步。
$sort
排序。
$out
輸出結果到集合。
$project
過濾字段。
https://docs.mongodb.com/manu...
options 參數explain boolean
處理信息。
allowDiskUse boolean
true 可往磁盤寫臨時數據。
cursor
cursor: { batchSize:
給返回集合設置一個初始大小。
hint string or document
強制指定索引。
https://docs.mongodb.com/manu...
查詢示例匯總統計文檔中某個字段(如"sum")的count值:
$pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["sum"], "sum_value" => ["$sum" => "$money"] ]] ];
某列的去重后的數據:
$pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["user_id" => "$user_id"] ]] ];
統計某列(如"user_id")去重后的count值:
$pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["user_id"=>"$user_id"] ]], ["$group" => [ "_id" => "_id.user_id", "number" => ["$sum"=>1] ]] ]; $pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["qid" => "$qid"], "max_number" => ["$max" => "$days"] ]], ["$group" => [ "_id" => ["number" => "$max_number"], "total" => ["$sum" => 1] ]] ];
統計分組后,各組內的某列匯總值:
$pipeline = [ ["$match" => $tmpCondition], ["$group" => [ "_id" => ["type" => "$type"], "sum_value" => ["$sum" => "$number"] ]] ];
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19329.html
摘要:一按照等條件組合查詢,同時添加和原生二執行操作,更新單個文檔原生三通過命令更新文檔并且返回更新之后的文檔只能作用于單個文檔原生四聚合操作根據某一字段,并且將文檔中的某一字段合并到數組中,最后取數組中的第一個元素原生五數組查詢,在某個中包 一、按照in、eq、lte等條件組合查詢,同時添加sort和limit1、原生 db.message.find( { receiverRol...
摘要:上篇文章中我們已經學習了中幾個基本的管道操作符,本文我們再來看看其他的管道操作符。算術操作符通過算術操作符我們可以對分組后的文檔進行求和或者求平均數。好了,中的管道操作符我們就先說到這里,小伙伴們有問題歡迎留言討論。 上篇文章中我們已經學習了MongoDB中幾個基本的管道操作符,本文我們再來看看其他的管道操作符。 本文是MongoDB系列的第十三篇文章,了解前面的文章有助于更好的理...
摘要:簡單地說,倒排索引就是把與對調之后的索引,構建倒排索引的目的是提升搜索性能。本文將介紹中兩種構建倒排索引的方法與。 摘要: 為MongoDB中的數據構建倒排索引(Inverted Index),然后緩存到內存中,可以大幅提升搜索性能。本文將通過為電影數據構建演員索引,介紹兩種構建倒排索引的方法:MapReduce和Aggregation Pipeline。 GitHub地址: 作者:...
摘要:將返回結果限制為前個。所以,聚合的結果必須要限制在以內支持的最大響應消息大小。包含字段和排除字段的規則與常規查詢中的語法一致。改變字符大小寫的操作,只保證對羅馬字符有效。只對羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數據存儲在Mon...
摘要:將返回結果限制為前個。所以,聚合的結果必須要限制在以內支持的最大響應消息大小。包含字段和排除字段的規則與常規查詢中的語法一致。改變字符大小寫的操作,只保證對羅馬字符有效。只對羅馬字符組成的字符串有效。 上一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲文件下一篇文章:MongoDB指南---17、MapReduce 如果你有數據存儲在Mon...
閱讀 1458·2021-11-24 09:39
閱讀 1775·2021-11-22 15:25
閱讀 3728·2021-11-19 09:40
閱讀 3283·2021-09-22 15:31
閱讀 1288·2021-07-29 13:49
閱讀 1192·2019-08-26 11:59
閱讀 1308·2019-08-26 11:39
閱讀 919·2019-08-26 11:00