1. 程式人生 > >MongoDB查詢操作

MongoDB查詢操作

man null 根據 exist () 數據 組合 返回 pre

按條件查詢

比較操作:$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查詢操作