MongoDB查詢操作

來源:互聯網
上載者:User

標籤:users   技術   元素   文法   通過   pre   過程   save   exist   

按條件查詢

比較操作:$lt,$lte,$gt,$gte,$ne

db.user.find({"score":{$gt:80}});

$or :包含多個條件,他們之間為or的關係 ,$nor相當於or取反

db.user.find({$or:[{"score":{$gt:80}},{"user_id":"u3"}]});

$not:用作其他條件之上,取反

$mod:將查詢的值除以第一個給定的值,如果餘數等於等二個值則匹配成功

db.user.find({"score":{$mod:[4,1]}});

$in :查詢一個鍵的多個值,只要鍵匹配其中一個即可 , $nin為不包含

db.user.find({"score":{$in:[70,80]}});

$all鍵需要匹配所有的值

db.user.find({"house":{$all:[90]}});

$exists:檢查某個鍵是否存在,1表示存在,0表示不存在

db.user.find({"name":{$exists:1}});

null類型:不僅能匹配鍵的值為null,還匹配鍵不存在的情況

db.user.find({"name":null});

 

查詢數組

單個元素匹配,就跟前面寫條件一樣,{key:value}

 db.user.find({"house":80});

多個元素匹配,使用$all, {key:{$all:[a,b]}},元素的順序無所謂

db.user.find({"house":{$all:[80,120]}});

可以使用索引指定查詢數組特定位置, {“key.索引號”:value}

 db.user.find({"house.1":120});

查詢某個長度的數組,使用$size

db.user.find({"house":{$size:2}});

指定子集,使用$slice,正數是前面多少條,負數是尾部多少條,也可以指定位移量和要返回的元素數量,比如:$slice:[50,10]

db.user.find({"house":{$exists:1}},{"house":{$slice:[0,2]}});

可以使用$來指定合格任意一個數組元素,如:{”users.$”:1}

 db.user.find({"house":{$exists:1}},{"house.$":1});

$elemMatch:要求同時使用多個條件陳述式來對一個數組元素進行比較判斷

db.user.find({"house":{$elemMatch:{$gte:80,$lt:90}}});

 

查詢記錄條數的命令:count

db.user.find().count();

如果要擷取按條件查詢後記錄的條數,需要指定count(true或者非0的數)

  • 限制返回的記錄條數的命令:limit(要返回的條數)
  • 限制返回的記錄條數起點的命令:skip(從第幾條開始返回)
  • 排序的命令:sort({要排序的欄位:1為升序,-1為降序})
db.user.find({}).limit(2).count(1);

db.user.find({}).skip(1).limit(2);

 db.user.find({}).sort({"score":1});

分頁查詢:組合使用limit,skipt和sort
當然也可以使用其他方式來分頁,比如採用自訂的id,然後根據id來分頁


查詢給定鍵的所有不重複的資料,命令:distinct
文法:db.runCommand({“distinct”:集合名,“key”:”獲得不重複資料的欄位”});

 db.runCommand({"distinct":"user","key":"user_id"});

 

預存程序
MongoDB的預存程序其實就是個自訂的js函數
使用db.system.js.save({“_id”:名稱,value:函數});

var totalF=function (a,b){ return a+b ;};db.system.js.save({"_id":"myF","value":totalF});

可以通過如下命令查看:db.system.js.find();
可以通過如下命令調用:db.eval(名稱)

db.eval("myF(1,3)");

 

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.