Mongodb(五):Mongodb的增刪改查(3)----查詢詳解(上)

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   strong   sp   資料   on   

MongoBD的查詢說白了就是一個find()方法。But 還是有點小複雜。來吧

(1) 查詢所有的資料:db.集合名.find(); 這沒啥說的。

(2) 查詢第一條資料:db.集合名.findOne(); 也沒啥說的。

(3) 條件查詢:db.集合名.find(查詢條件),查詢條件也是一種json格式的東東。所以理解json對於學Mongodb真的很重要。

    如下:查詢name為zhangsan的記錄:

    

(4) 組合條件查詢:db.collection名.find({查詢條件1,查詢條件2,...}), 還是上面那個例子,現在假設要查詢name為zhangsan,

    age為23:  db.customer.find({"name":"zhangsan", "age":23})

(5) 返回指定的欄位:比如在關係型資料庫中 select * ...是返回所有欄位,select 欄位1, 欄位2....是返回兩個欄位,那麼在Mong

    odb中怎樣做到返回指定的欄位呢? 格式:db.collection名.find({查詢條件1,查詢條件2,...},{欄位1:1, 欄位2:1,....}),

    其中1代表顯示,如果是0就是不顯示。預設是全部顯示的。如果不想顯示_id,必須顯示的將 _id的是否顯示置為0,如下:

    

(6) 範圍查詢:先看看比較操作符吧。$lt(<) , $gt(>), $lte(<=), $gte(>=), $ne(!=). 執行個體如下:

    

(7) $in查詢:查詢值在指定的集合內進行匹配.和SQL中的 in 差不多。如下:

    查詢名字為zhangsan或者是lisi的使用者的資訊:

    

(8) $nin查詢:對不在指定集合條件的記錄進行匹配。和SQL中 not in類似,比如現在要查詢name不是zhangsan或者lisi的資訊:

    db.customer.find({"name":{"$nin":["zhangsan", "lisi"]}})

(9) $or查詢:就是 或者 的意思嘛,上樣本:查詢name為zhangsan 或者 age 為13的使用者的資訊:

    db.customer.find({"$or":[{"name":"zhangsan"}, {"age":13}]}),如下所示:

    

    再寫一個稍微複雜一點的,查詢_id在 001或002中, 或者name為zhaoliu的使用者的資訊:

    db.customer.find({"$or":[{"_id":{"$in":["001", "002"]}}, {"name":"zhaoliu"}]}).如下所示:

    

(10)$not查詢: $not和$nin的區別是$nin是只能用到集合上.$not範圍廣點。

    查詢_id不在001和002中的使用者的資訊:db.customer.find({"_id":{"$not":{"$in":["001", "002"]}}})

    

(11)null:現在collection中有如下document:

    

    從可看到有些document中有sex,有些沒有,有些為null, 輸入如下命令:db.customer.find({"sex":null}),結果如下:

    

    從結果可以看出,不但sex為null的查詢出來了,而且沒有sex欄位的document也查詢出來了。如果要找到age為null的,還應該在

   這個基礎上必須限制出現age.那怎麼辦呢?先放一放,說完下面這一條就出來了。

(12)$exists : 判斷欄位是否存在.比如,查詢所有存在name欄位的記錄:db.customer.find({"name":{"$exists":true}}), 查

    詢所有的不存在sex欄位的記錄:db.customer.find({"sex":{"$exists":false}}). 現在解決(11)中的問題:

    

    不過有一點覺得很奇怪:為什麼不能像下面這樣寫?

    

    其實仔細想想也就明白了:因為條件的寫法是遵循json格式,在json中,鍵不能重複,當重複的時候,後者會將前者覆蓋,我想大概

    就是這個原因吧。

(12)Regex: 直接上樣本:查詢name中包含ang的使用者的資訊:db.customer.find({"name":/ang/})

    

    查詢那麼以 Z 開頭的使用者的資訊:db.customer.find({"name":/^z/})

    查詢以an結尾的使用者的資訊:db.customer.find({"name":/an$/})

    

Mongodb(五):Mongodb的增刪改查(3)----查詢詳解(上)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.