MongoDB--操作符

來源:互聯網
上載者:User

標籤:查詢   構建   遊標對象   count   使用   自增   查詢條件   Regex   padding   

  •   $gt -- >
  •   $lt -- <
  •   $gte -- >=
  •   $lte -- <=

  

  •   $all 與 in 類似,不同的是必須滿足[]內所有的值
  •   $exists 欄位是否存在 db.sun.find({"age":{"$exists":true}}) 查詢存在age欄位的資料,null 欄位值為null和不存在查詢欄位的資料都會列出來 ,只查詢值null的資料    db.sun.find({"age":{"$in":[null],"$exists":true}}) 存在這個欄位並且值為null
  •   $mod 模數運算(等同於C# %取餘運算 10%3==1 ) db.sun.find({"age":{$mod:[10,0]}})  欄位對10模數等於0的資料
  •   $ne 不等於 db.sun.find({"age":{"$ne":10}}) 查詢age欄位不等於10的欄位
  •   $in 包含操作,等同於SQL 的in操作 db.sun.find({"name":{"$in":["sun","2","sunxueyang"]}})
  •   $nin 不包含操作,等同於SQL not in 操作 db.sun.find({"name":{"$nin":["sun","2","sunxueyang"]}})
  •   $size 長度判斷。 db.sun.find({"like":{"$size":2}}) 擷取like數組長度是2的資料
  •   /Regex/ 查詢可以直接使用正則去處理 ,sun/=sun%   /sun/=%sun%  /sun=%sun
  •   $where 可以傳入查詢條件執行。 db.sun.find({"$where":"this.age>1"}) this在執行時代表當前行資料
  •   count() 擷取查詢數量
  •   skip(10) 取第10條往後的資料
  •   limit(5) 取查詢出來的5條件  等同於top 5 ,與skip組合就可以變成分頁查詢,db.sun.find().skip(10).limit(10) 如果每頁10條,這就是取的第2頁資料,db.sun.find().skip((2-1)*N).limit(N).sort(field:1) 排序,當資料量比較大的時候,效能會比較低,建議採用,建立一個自增欄位,分頁時計算自增欄位的最小數字,然後使用limit
  •   sort() 排序函數  sort({age:1,name:-1}) 組合排序,根據age正序,根據name倒序,注意:如果正序排時,欄位不存在的資料排在前面
  • 相同屬性,實值型別不同時,排序次序為:
最小值
null
數字(整形、長整型、雙精確度)
字串
對象、文檔
數組
位元據
對象ID
布爾型
日期型
時間戳記
Regex
最大值

 

  •   distinct() 對指定欄位進行去重  db.runCommand({"distinct":"表名","key":"指定列"}) 等同於 db.sun.distinct("name")

 

  •   group() 分組  
db.gtb.group({ key:{age:1}, cond:{age:{$gt:2}}, reduce:function(){}, initial:{}})  等同於  select age,count(1) from gtb group by age  db.posts.group({ "key" : {"day" : true}, //根據key分組,結果顯示key "initial" : {"tags" : {}}, //初始化展示的tags文檔對象 "$reduce" : function (doc, prev) { //doc為當前行對象,prev為initial構建的對象   for (i in doc.tags) { //遍曆當前行的tags數組     if (doc.tags[i] in prev.tags) { //如果當前行tags數組裡面的資料存在於構建顯示的對象裡面,則進行統計+1,否則初始化為1     //“prev”則代表“累加器文檔”的累加狀態       prev.tags[doc.tags[i]]++;     }     else     {       prev.tags[doc.tags[i]] = 1;     }  } }, "finalize":function(prev){ //針對每次reduce結束之後,對累加器文檔進行操作    for(i in prev.tags) //保留當前累加器大於2的資料    {      if(prev.tags[i]<2)      {        delete prev.tags[i];      }    } }}) 等同於,先根據day時間分組,然後對分組之後得tags數組之內的內容進行統計,


 

  •   next() 遊標操作  
var  cur =db.posts.find(); //當前為查詢集合對象while(cur.hasNext()){print(cur.next()) //表示列印當前遊標對象}  等同於 cur.forEach(function(itm){print( itm )}) ,不同點為cur.next()是對象實體, itm 為對象引用



  

  •   find() 查詢,  find查詢 在以對象形式出現的時候,並沒有第一時間進行查詢,而是等待真正查詢時才去進行檢索。例如:
      var res=db.posts.find()  //當前並未真正執行查詢  res.hasNext() //此時才真正出發查詢

 

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.