天天看點

查詢

find簡介

MonngoDB中使用find來進行查詢。查詢就是傳回集合文檔中的子集,子集的範圍從0個到文檔到整個集合。find的第一個參數決定了要傳回哪些文檔,這個參數是一個文檔,用于指定的查詢條件。

空的查詢文檔(例如{})會比對集合 的全部内容。要不是指定查詢文檔,預設就是{}。 db.c.find() 等價與 db.c.find({})

查詢條件

"$lt" "$lte" "$gt" "$gte"這些比較操作符分别對應着< <= > >=,可以将其組合起來以便查找一個範圍的值。如: 查詢‘age’字段大于等于18,小于等于30的所有文檔。

db.users.find({"age" : {"$gte" : 18, "$lte" : 30}})

還有一個不等于“$ne”。

“$in”可以用來查詢一個鍵的多個值;“$or”更通用一些,可以在多個鍵中查詢任意的給定值。

"$not"是元條件句,即可以用在任何其他條件之上。與正規表達式聯合使用時極為有用,用來查詢那些與特定模式不比對的文檔。 "$mod"會将查詢的值除以第一個給定值,若餘數等于第二個給定值則比對成功。

特定類型的查詢

null這個類型有點奇怪,它确實能比對自身;但是null不僅會比對到某個鍵的值為null的文檔,而且還會比對不包含這個鍵的文檔。,是以這種比對還會傳回缺少這個鍵的所有文檔。

如果想要比對鍵值為null的文檔,既要檢查該鍵的值是否為null,還要通過“$exists”判定鍵值已存在。

db.c.find({"z" : {"$in" : [null], "$exists" : true}})

查詢數組

查詢數組元素與查詢标量值是一樣的。

$all:如果需要多個元素來比對數組,就要用“$all”了,這樣會比對一組元素。

$size:它可以用于查詢特定長度的數組。

$slice:這個操作符可以傳回某個鍵比對的數組元素的一個子集。

$:$操作符可以得到一個比對的元素。

查詢内嵌文檔

查詢内嵌文檔與普通文檔查詢完全相同。

$where查詢

鍵/值是一種表達能力非常好的查詢方式,但是依然有些需求它無法表達。 不是非常必要時,一定要避免使用“$where”查詢,因為他們在速度上要比正常查詢慢的很多。每個文檔都要從BSON轉換成JS對象,然後通過“$where”表達式來運作。而且"$where"語句不能使用索引。

遊标

用戶端對遊标的實作通常能夠對最終的結果進行有效的控制。可以限制結果的數量,略過部分結果,根據任意鍵按任意順序的組合對結果進行排序,或者是執行其他一些強大的操作。

limit skip和sort分别對查詢結果限制,忽略和排序。

比較順序:

最小值;

null ;

數字(整型、長整型、雙精度);

字元串;

對象 / 文檔;

數組;

二進制資料;

對象 ID ;

布爾型;

日期型;

時間戳;

正規表達式;

最大值 。

繼續閱讀