3.1 查詢操作符
操作符就是對資料進行操作的符号,其表達了要對資料執行的操作。資料庫系統的每一條查詢指令都有一個操作符,表示該指令應該執行什麼性質的操作。
條件操作符
最常用也是最簡單的操作符<、<=、>、>=如下面的代碼所示:
$all比對所有
此操作符跟sql文法的in類似,不同的是in隻需要比對括号内的某一個值,而$all必須滿足括号内的所有值,如下面的代碼所示:
$exists判斷字段是否存在
此操作符用于判斷某個字段是否存在,例如查詢所有存在age字段的記錄,如下面的代碼所示:
通過實驗結果可以看出隻顯示了age字段的資料,age_1的資料并沒有顯示出來。
null值處理
此操作符用于處理null值,null值的處理稍微複雜,如下面的代碼所示:
跟期望的結果一樣,隻有“lily”被找出來了。
$mod取模運算
此操作符用于取模運算。例如查詢age取模10等于1的資料,如下面的代碼所示:
可以看出,隻顯示age取模6等于1的資料,其他不符合規則的資料并沒有顯示出來。
$ne不等于
此操作符用于布爾不等于的運算。例如查詢x的值不等于3的資料,如下面的代碼所示:
可以看出,隻顯示age不等于7的資料,age等于7的資料沒有顯示出來。
$in包含
此操作符與sql标準文法的用途一樣,即要查詢的資料在一個特定的取值範圍内。
例如,查詢x的值在2、4、6範圍内的資料,如下面的代碼所示:
可以看出隻顯示age等于7或8的資料,其他不符合規則的資料并沒有顯示出來。
$nin不包含
此操作符與sql标準文法的用途是一樣的,即要查詢的資料在一系列枚舉值的範圍外。
查詢x的值在2、4、6範圍外的資料,如下面的代碼所示:
通過結果可以看出隻顯示age不等于7或8的資料,其他不符合規則的資料并沒有顯示出來。
$size比對數組元素個數
此操作符用于統計數組中的元素個數。例如,對于記錄:
通過結果可以看出,表中共有2條資料。
skip限制傳回記錄的起點
此操作符用于過濾結果集中的某些行。例如,從第3條記錄開始,傳回5條記錄 ,如下面的代碼所示:
通過結果可以看出,表中第2條資料被顯示了出來。
sort排序
此操作符用于将結果集排序。例如,以年齡升序(asc)排列,如下面的代碼所示:
通過結果可看到第1條是age=20的,而後按降序排列結果集。
distinct去掉重複值
在表中可能會包含重複值,distinct操作符用來過濾掉多餘的重複記錄, 對于重複記錄隻保留一條。通常用它來傳回不重複記錄的條數,如下面的代碼所示:
name的不重複值為3個,age的不重複值為2個,調用distinct操作符後,傳回一個清單,裡面包含了不重複值的枚舉值。
注意 這種操作在資料量較大的表裡會比較耗時,請慎重使用這個功能。
group分組統計
by子句主要用于對where中得到的結果進行分組。也就是說,它在where子句之後執行,對經過where篩選後的結果按照某些列進行分組,之後進行相應的處理工作。
當使用聚集函數的時候,除非對整個語句的查詢結果集進行聚集運算,否則都要通過指定group by子句來确定是對某類結果集進行聚集運算,如下面的傳統sql代碼所示:
上面的語句用mongodb也是可以實作的,如下面的代碼所示:
參數說明:
1)key:要分組的列。本例中為a和b。
2)cond:分組條件。可以了解為where條件内容,本例中為active=1。
3)reduce: 分組計算的方法。本例中為sum(c)。
4)initial:分組計算的初始值。本例中指csum的值從0開始計算。