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 ;
布爾型;
日期型;
時間戳;
正規表達式;
最大值 。