Mongodb 筆記03

來源:互聯網
上載者:User

標籤:

查詢

1. MongoDB使用find來進行查詢。find的第一個參數決定了要返回哪些文檔,這個參數是一個文檔,用於指定查詢條件。空的查詢會匹配集合的全部內容。要是不指定查詢,預設是{}。

2. 可以通過find的第二個參數來指定想要的鍵。這樣即會節省傳輸的數量,又能節省用戶端解碼文檔的時間和記憶體消耗。舉例:db.users.find({},{"username":1,"email":1})

3. 預設情況下"_id"這個鍵總是被返回,即便是沒有指定想要返回這個鍵。可以通過第二個參數剔除。

4. 可以通過第二個參數來剔除查詢結構中的某個索引值對。舉例:db.users.find({},{"_id":0}),這樣"_id"就不會被返回。

5. 查詢條件

    1). 查詢條件:"$lt"、"$lte"、"$gt"和"$gte"就是全部的比較操作符,分別對應<、<=、> 和>=。舉例:db.users.find({"age":{"$gte":18,"$lte":30}})。"$ne" 表示不等於。

    2). OR查詢:

         a. "$in"可以用來查詢一個鍵的多個值: db.raffle.find({"ticket_no":{"$in":[725,542,390]}})

         b. "$nin"將返回與數組中所有條件不匹配的內容: db.raffle.find({"ticket_no":{"$nin":[725,542,390]}})

         c. "$or"可以在多個鍵中尋找任意給定的值: db.raffle.find({"$or":[{"ticket_no":725},{"wenner":true}]})

    3). $not"        

         a. "$mod"模數運算子,"$mod"將會查詢的值除以第一個給定值,若餘數等於第二個給定的值則匹配成功:db.users.find({"id_num":{"$mod":[5,1]}})

         b. 如果查詢上一條相反的結果:db.users.find({"id_num":{"#not":{"$mod":[5,1]}}})。

         c. "$not"與Regex聯合使用時,極為有用,用來尋找那些魚特定模式不匹配的文檔。

    4). 條件語義: 條件陳述式是內層文檔的鍵,而修改器則是外層文檔的鍵。

6. 使用普通的AND型查詢時,總是希望儘可能用最少的條件來限定結果的範圍。OR型查詢正相反:第一個查詢條件應該儘可能匹配更多的文檔,這樣才是最為高效的。"$or"在任何情況下都會

    正常工作。如果查詢最佳化工具可以更高效地處理"$in",那就選擇使用它。

7. 特定查詢條件:

    1). null : db.c.find({"y":null}) 。null 不僅會匹配某個鍵的值為null的文檔,而且還會匹配不包含這個鍵的文檔。

                  如果僅想匹配索引值值為null的文檔,紀要檢查該鍵的值是否為null,還要通過"$exists"條件判定索引值已存在。db.c.find({"z":{"$in":[null],"$exists":true}})

    

Mongodb 筆記03

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.