mongodb相關查詢總結
阿新 • • 發佈:2019-01-04
1.1、條件查詢(<,<=,>,>=)
db.collection.find({"field" : {$gt : value}});//大於,field > value
db.collection.find({"field" : {$lt : value}});//小於,field < value
db.collection.find({"field" : {$gte : value}});//大於等於,field >= value
db.collection.find({"field" : {$lte : value}});//小於等於, field <=value
db.collection.find({"field" : {$gt : value1, $lt : value2}});大於value1,小於value2
1.2、$all匹配所有(滿足[]內的所有值)
db.users.find({age : {$all : [6, 8]}});
可以查出{name : "zhangsan", age:[6, 8, 9]},查不出{name : "zhangsan", age : [6, 7, 9]}
1.3、$exists 判斷欄位是否存在
db.users.find({age : {$exists : true }}); //查詢所有存在age欄位的記錄
db.users.find({age : {$exists : false}});//查詢所有不存在age欄位的記錄
1.4、Null值處理
Null值的處理稍微有一點奇怪 ,”null”不僅能找到它自身,連不存在該欄位的記錄頁可以被找出來。所以我們要使用exits來限制。
db.users.find({age : {"$in" : [null], "$exists" : true}});
1.5 $mod 取模運算
查詢 age 取模 10 等於 0 的資料
db.student.find({age: {$mod : [ 10 , 0 ]}} )
1.6、$ne 不等於
db.users.find({age : {$ne : 20}});
1.7、$in 包含(與sql用法一樣)
db.users.find({age : {$in : [20, 25, 30]}});
db.users.find({name : /張/});//模糊查詢名字出現'張'
db.getCollection('data').find({"type" : {$in : [/資金不足/]}});//模糊查詢type陣列中包含'資金不足'
1.8、$nin 不包含
db.users.find({age : {$nin : [18, 20, 21]}});
1.9、$size 陣列元素個數
db.users.find({subjects : {$size : 3}});//查詢有三個科目的記錄
1.10 正則表示式匹配
db.users.find({name: {$not: /^B.*/}});//查詢不匹配 name=B*帶頭的記錄
db.getCollection('data').find({"name": {$regex:/liuzhilun.*/i}})//查詢name包含liuzhilun
1.11 Javascript 查詢和$where 查詢
查詢 a 大於 3 的資料,下面的查詢方法殊途同歸
db.c1.find({a : {$gt: 3}});
db.c1.find({$where: "this.a > 3"});
db.c1.find("this.a > 3");
f = function() { return this.a > 3; } db.c1.find(f);
1.12 count 查詢記錄條數
db.users.find().count();//count 查詢記錄條數
db.users.find().skip(10).limit(5).count();//以下返回的不是 5,而是 user 表中所有的記錄數量
db.users.find().skip(10).limit(5).count(true);//返回限制之後的記錄數量,要使用 count(true)或者 count(非 0)
1.13 skip 限制返回記錄的起點
db.users.find().skip(3).limit(5);//從第 3 條記錄開始,返回 5 條記錄(limit 3, 5)
1.14 sort 排序
db.users.find().sort({age: 1});//以年齡升序 asc
db.users.find().sort({age: -1});//以年齡降序 desc
1.15 查詢返回指定的欄位
db.users.find().sort({},{"欄位1":1,"欄位2":1});//1表示返回、0表示不返回
1.16 去重查詢
db.getCollection('info').distinct("workAddress", {"mobliePhone" : "13266668888"})
**2 新增索引**:
db.blacklist.ensureIndex({"orderId":"hashed"});//給blacklist表新增orderId的hashed索引