標籤:
查詢
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