mongoDB資料庫之聚合
使用聚合框架可以對集合中的文件進行變換和組合,用多個構件建立一個管道,用於對一連串的文件進行處理!構件包括篩選(filtering
), 投射(projecting),分組(grouping),排序(sorting),限制(limiting)和跳過(skipping)等
使用方法是使用aggregate函式
# 語法:
db.col.aggregate({"$構件": {"欄位名": 1}})
①:"$project"的使用
這個方法是使用類似於查詢中的欄位選擇器 --> db.col.find({"xx":"xxx"}, {"name":1, "age":1, "gender": 0})
例:
②:"$group"的使用
這個方法會按照指定欄位分組,由"_id"指定
例:如果按下面使用方式,加上count的話,表示如果zone對應的名字出現一次,就會對其加1
③:"$sort"的使用
這個方法會根據指定欄位排序(正序1或者倒序-1),和使用sort方法一樣
例:
④:"$limit"的使用
這個方法會指定數量返回,和limit方法一樣
例:
綜合使用上述構件如下:
例:
****************************************************************************************************************************************************************************************************************************************
以上為幾個構件的簡單使用,構件還可以有更加複雜的用法
一:"$project"
(1) 管道表示式
就是上面的使用方式
(2) 數學表示式
操作符:"$add" 接收一個或多個表示式,將這些表示式相加
"$subtract" 接收兩個表示式,用第一個表示式減去第二個表示式作為結果
"$multiply" 接收一個或多個表示式,將其相乘
"$divide" 接收兩個表示式,用第一個除以第二個商作為結果
"$mod" 接收兩個表示式,用第一個除以第二個餘數作為結果
(3)日期表示式
操作符: "$year" 提取年份
"$month" 提取月份
"$week" 提取周
"$dayOfMonth" 提取月中的第幾天
"$dayOfWeek" 提取週中的第幾天
"$dayOfYyear" 提取年中的第幾天
"$hour" 提取小時
"$minute" 提取分鐘
"$second" 提取秒
(4)字串表示式
操作符 :"$substr" 擷取字串
"$concat" 將給定表示式中字串連線在一起
"$toLower" 返回小寫形式
"$toUpper" 返回大寫形式
(5) 邏輯表示式
操作符: "$cmp" 比較兩個值,前者大返回正數,反之,返回負數
"$strcasecmp" 比較兩個字串
"$eq/ne/gt/gte/lt/lte" 比較兩個值,返回大的值
"$and" 如果所有表示式值都是true,則返回true,反之,返回false
"$or" 只要有任意表示式值是true,則返回true
"$not" 對錶達式取反
二:"$group"
(1) 分組操作符,上面所述
(2) 算術操作符:
"$sum" 計算總出現次數
"$avg": 計算平均值
(3) 極值操作符
"$max" 最大值
"$min" 最小值
"$first" 第一個值
"$last" 最後一個值
(4)陣列操作符
"$addToSet" 如果表示式不包含在當前陣列中,則新增
"$push" 不管是是什麼值都新增到陣列中
三,"$unwind" 將陣列中的每一個值拆分為單獨的文件,例如,有一篇擁有多條評論的文章,可以使用其將每條評論拆分為獨立的文件
資料格式:{"_id": xx, "post": "hello", "author": "xx", "comments": [{}, {}, {}]}
#語法:
db.xx.aggregate({"$unwind": "$comments"})
相關文章
- MongoDB之聚合MongoDB
- MongoDB學習之聚合操作MongoDB
- MongoDB資料庫MongoDB資料庫
- mongodb聚合MongoDB
- MongoDB 資料庫操作MongoDB資料庫
- mongodb資料庫操作MongoDB資料庫
- nodejs操作mongodb資料庫(mongodb)NodeJSMongoDB資料庫
- Python全棧MongoDB資料庫(聚合、二進位制、GridFS、pymongo模組)Python全棧MongoDB資料庫
- nodejs之MongoDB 非關係型資料庫NodeJSMongoDB資料庫
- mongodb 聚合管道MongoDB
- mongodb資料庫中插入資料MongoDB資料庫
- MongoDB 聚合嵌入的陣列(扁平化資料+管道)MongoDB陣列
- 初試MongoDB資料庫MongoDB資料庫
- mongodb 如何建立資料庫MongoDB資料庫
- 快速掌握 MongoDB 資料庫MongoDB資料庫
- MongoDB資料庫安裝MongoDB資料庫
- 學習MongoDB資料庫MongoDB資料庫
- MongoDB資料庫備份MongoDB資料庫
- MongoDB資料庫入門MongoDB資料庫
- MongoDB資料庫簡介MongoDB資料庫
- Mongodb資料庫連線MongoDB資料庫
- 資料庫——MongoDB——>Java篇資料庫MongoDBJava
- MongoDB資料庫效能分析MongoDB資料庫
- 啟動MongoDB資料庫MongoDB資料庫
- 資料庫_SQL-MongoDB資料庫SQLMongoDB
- MongoDB 資料庫安全之使用者密碼修改MongoDB資料庫密碼
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- MongoDB之資料刪除MongoDB
- MongoDB之資料增加操作MongoDB
- MongoDB之資料查詢(資料排序)MongoDB排序
- MongoDB - 聚合查詢MongoDB
- mongodb資料庫如何建立索引?MongoDB資料庫索引
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- Oracle連線MongoDB資料庫OracleMongoDB資料庫
- MongoDB資料庫基礎操作MongoDB資料庫
- python操作mongodb資料庫PythonMongoDB資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫