標籤:
MongoDB中使用find或findOne函數執行查詢
find函數
db.c.find()--查詢集合c所有
db.c.find({“name”:”zhangsan”})
注意:查詢條件的值必須是常量,也就是說不能用變數
db.c.find({“name”:this.name})//這樣是行不通的
查詢條件
“$lt”對應<
“$lte”對應<=
“$gt”對應>
“$gte”對應>=
“$ne”對應!=
用法:
db.users.find({“age”:{“$gte”:18,”$lte”:30}})//尋找年齡大於等於18小於等於30的使用者
db.users.find({“name”:{“$ne”:”張全蛋”}})
OR查詢
MongoDB中用兩種方式來實現OR查詢:
“$in”可以用來查詢一個鍵的多個值,它非常靈活,可以指定不同類型的條件
“$nin”與”$in”作用相反
“$or”可以在多個賤種查詢任意的給定值
用法:
db.users.find({“name”:{“$in“ [“王尼瑪”,“張全蛋”]}})
db.users.find(“user_id”:{“$in”: [123456,”123456”]})//使用者id鍵的資料類型發生變化時的尋找
db.users.find({“name”:{“$or”: [“age”: {“$in”: [18,20,25]},{“gender”:1}]}})
$not
$not是元條件操作符,它可以用在任何其他條件之上。
db.users.find({“id_num”:{“$not”:{“$mod”: [5,1]}}}) //”$mod”是模數運算子
null類型
users集合有三條資料如下:
{“name”:王尼瑪”,”age”:18}
{“name”:”張全蛋”,”age”:20}
{“name”:”唐馬孺”,”age”:null}
其中“唐馬儒”的age為null值
然後查詢:db.users.find({“age”:null})
查出來的結果不僅有{“name”:”唐馬孺”,”age”:null},其他的兩條也會被查出。因為null不僅會匹配某個索引值為null的文檔,而且還會
匹配不包含這個鍵的文檔。
如果僅想匹配索引值為null的文檔,那就要用到”$exists”
db.users.find({“age”: [null],”$exists”:true})
Regex
db.users.find({“name”:/張./})
查詢數組
db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})
查詢:
db.food.find({“fruit”: “banana”})
結果會匹配上面插入的文檔
$all:用於尋找匹配多個條件下的數組
例如,常見一個包含3個元素的集合:
db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})
db.food.insert({“fruit”: [“apple”,”kumquat”,”orange”]})
db.food.insert({“fruit”: [“cherry”,”banana”,”apple”]})
要找到既有”apple”又有“banana”的文檔:
db.food.find({fruit:{$all: [“apple”,”banana”]}})
結果會找出第1個和第3個文檔
$size:用於查詢特定長度的數組
db.food.find({“fruit”:{“$size”:3}})
按索引匹配:db.food.find({“fruit.2”:”peach”]})
$slice:用於分割find/findOne傳回值的結果集,返回某個鍵匹配的數組元素的子集。
db.food.findOne({},{“fruit”:{“$slice”:2}})
db.food.findOne({},{“fruit”:{“$slice”:-2}})//從右向左
$elemMatch:要求MongoDb同時使用查詢條件作用於同一個數組(預設情況下是多個條件作用於多個數組)
db.test.find({“x”:{“$elemMatch”:{“$gt”:10,”$lt”:20}}})
$where查詢
$where用於任何查詢,它可以執行任意Javascript。因此為了安全起見,應該嚴格限制或不使用$where。
db.food.find({“$where”:function(){forvar current in this(){ //todo}}})
使用$where查詢時,速度上要比常規查詢慢的多,因為它要把每個文檔從BSON對象轉換成Javascript對象。
limit、skip和sort
limit函數:用於限制查詢結果的個數
db.food.find().limit(3) //只返回3個匹配的結果。要是匹配的結果不到3個,則返回匹配數量的結果。
skip函數:用於略過指定個數的文檔
db.food.find().skip(1) //略過第1個文檔,返回後兩個
sort函數:對查詢結果進行排序,1是升序,-1是降序
db.food.find().sort({“fruit”:1})
MongoDB學習筆記-查詢