MongoDB學習筆記-查詢

來源:互聯網
上載者:User

標籤:

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學習筆記-查詢

相關文章

聯繫我們

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