
文章插圖
3 MQL vs SQL
分頁(yè)查詢對(duì)比
在SQL中常使用SKIP 和 LIMIT 進(jìn)行分頁(yè)查詢,在MQL中也有等價(jià)操作:
-- SQLSELECTFIRST_NAME AS `名`,LAST_NAME AS `姓`FROM UsersWHERE GENDER = '男'SKIP 100LIMIT 20-- MQLdb.users.aggregate([{$match: {gender: "男"}},{$skip: 100},{$limit: 20},{$project: {'名': '$first_name','姓': '$last_name'}}]);分組查詢對(duì)比在SQL中常使用GROUP BY + HAVING 的分組高級(jí)查詢,在MQL中也有等價(jià)操作:
-- SQLSELECT DEPARTMENT,COUNT(NULL) AS EMP_QTYFROM UsersWHERE GENDER = '女'GROUP BY DEPARTMENT HAVINGCOUNT(*) < 10-- MQLdb.users.aggregate([{$match: {gender: '女'}},{$group: {_id: '$DEPARTMENT’,emp_qty: {$sum: 1}}},{$match: {emp_qty: {$lt: 10}}}]);unwind在MQL中有一個(gè)特有的步驟 unwind,它可以實(shí)現(xiàn)將文檔中的某一個(gè)數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個(gè)值 。
> db.students.findOne(){name:'張三',score:[{subject:'語(yǔ)文',score:84},{subject:'數(shù)學(xué)',score:90},{subject:'外語(yǔ)',score:69}]}> db.students.aggregate([{$unwind: '$score'}]){name: '張三', score: {subject: '語(yǔ)文', score: 84}}{name: '張三', score: {subject: '數(shù)學(xué)', score: 90}}{name: '張三', score: {subject: '外語(yǔ)', score: 69}}End總結(jié)本文簡(jiǎn)單介紹了MongoDB的Aggregation Framework 以及 如何使用聚合框架進(jìn)行聚合查詢 。
下一篇,我們會(huì)學(xué)習(xí)MongoDB的模式設(shè)計(jì)中的一些設(shè)計(jì)模式 。
參考資料
唐建法,《MongoDB高手課》(極客時(shí)間)
郭遠(yuǎn)威,《MongoDB實(shí)戰(zhàn)指南》(圖書(shū))
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- mongodb是nosql數(shù)據(jù)庫(kù)嗎 5 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 7 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 8 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 9 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 11 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 12 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 13 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫(kù)嗎 14 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- 做雙眼皮有幾種方法
- 最有激情的健身運(yùn)動(dòng)是什么
