mongodb學習(五) 查詢

來源:互聯網
上載者:User

標籤:style   blog   color   使用   資料   ar   div   size   

 

1. 按條件查詢:

db.users.find({"name":"MM1"})

2.find的第二個參數可以指定要返回的欄位:這裡1 表示要顯示的欄位,0 表示要剔除的欄位

db.users.find({"name":"MM1"},{"name":1,"age":1})
db.users.find({"name":"MM1"},{"name":0})

3. 查詢條件: "$lt","$lte","$gt","$gte": <,<=,>,>=

db.users.find({"age":{"$lte":70,"$gte":30}})

4. $in : 匹配指定鍵的多個值,; $nin和$in相反 $or 匹配多個鍵的值; $mod模數,將給定值除以第一個數,若餘數等於第二個數就返回這條資料

db.users.find({"age":{"$in":[20,25,30]}})db.users.find({"age":{"$nin":[20,25,30]}})db.users.find({"$or":[{"age":20},{"winner":"true"}]})db.users.find({"age":{"$mod":[20,5]}})db.users.find({"age":{"$not":{"$mod":[20,5]}}})

5. 查詢null:

db.users.find({"name":null}) //這樣查詢出來的還會匹配不包含該鍵(name)的文檔db.users.fin({"name":{"$in":[null],"$exists":true}}) //使用$exists,就可以準確查出

6. 數組查詢:

db.users.find({"fruit":"apple"}) //查詢含有apple的數組db.users.find({"fruit":{"$all":["apple","banana"]}}) //查詢包含有apple和banana的數組db.users.find({"fruit.1":"banana"})//查詢數組中第二值為banana的數組,數組是從0開始的

7. 根據數組長度查詢:

db.users.find({"fruit":{"$size":3}})//$size不能和$gte,$lte等合用,可以通過在更新資料時插入一個size欄位解決

8. $slice 限制返回的文檔數
9. 盡量不使用$where: (1) 查詢速度慢-->每個文檔都要從BSON轉換為js對象,然後通過$where運算式運行; (2)不能使用索引;

10. limit,skip,sort

db.users.find().limit(10).skip(10).sort({"name":1})

   避免使用skip略過大量結果. 否則速度會很慢,原因是:首先要找到這些要略過的資料,然後再拋棄這些資料;不使用skip分頁的方法:

//(1)擷取第一頁var page1=db.users.find().sort({"date"-1}).limit(20)//(2)使用最後一個date作為查詢條件來擷取下一頁var lastest=nullwhlie(page1.hasNext)){     lastest=page1.next();  }var page2=db.users.find({"date":{"$gt":lastest.date}}).sort({"date":-1}).limit(20)

11. 擷取隨機文檔 : 在儲存資料時就插入一個隨機欄位,查詢時根據產生的隨機數來尋找文檔

//插入資料db.users.insert({"name":"11","age":22,"random":Math.random()})db.users.insert({"name":"11","age":22,"random":Math.random()})db.users.insert({"name":"11","age":22,"random":Math.random()})db.users.insert({"name":"11","age":22,"random":Math.random()})db.users.insert({"name":"11","age":22,"random":Math.random()})//查詢隨機文檔var random=Math.random();db.users.find({"random":{"$gt":random}})//如果為空白可以換為$lt

 

相關文章

聯繫我們

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