基本方法
操作 | 方法 | 實例 | 備註 |
---|---|---|---|
讀取匹配文檔 | find/findOne | db.c.findOne() | |
讀取匹配的第一個文檔 | findOne | db.c.findOne() |
拓展查詢
操作 | 方法 | 實例 | 備註 |
---|---|---|---|
指定需要返回的鍵/值 | find/findOne({},{‘key’:1})) | find/findOne 第二個參數指定 key 值(key爲邏輯false,移除鍵) | |
$and | 默認情況 | ||
條件匹配 小於/小於等於 | $lt/$lte | db.c.find({‘age’:{‘$lt’:18}}) | |
條件匹配 大於/大於等於 | $gt/$gte | db.c.find({‘age’:{‘$gt’:18}}) | |
條件匹配 不等於 | $ne | db.c.find({‘age’:{‘$ne’:18}}) | |
條件匹配 多個值 | $in | db.c.find({‘age’:{‘$in’:[18,28,38]}}) | 一個鍵 多個值 |
條件匹配 過濾多個值 | $nin | db.c.find({‘age’:{‘$in’:[18,28,38]}}) | $in 取反 |
條件匹配 多個值 | $or | db.c.find({‘$or’:[{‘age’:18},{‘sex’:’female’}]}) | 多個鍵 (第一個條件匹配更多 更高效) |
餘值匹配 | $mod | db.c.find({‘age’:{‘$mod’:[{5,1]}) | 將查詢的值除以第一個值,若餘數等於第二個值,則匹配成功 |
取反 | $not | db.c.find({‘age’:{‘$not’:{“$in”:[{5,1]}}) | 元條件 可以其他條件之上使用 |
判定鍵位存在 | $exists | db.c.find({‘age’:{“$exists”:true} db.c.find({‘age’:{“$in”:[{null],”$exists”:true}) |
null 類型會匹配值不爲 null 的文檔,$exists 解決這問題 |
匹配多個 數組元素 | $all | db.c.find({‘type’:{“$all”:[‘a’,’b’]}) | 匹配type 中含有[‘a’,’b’,…] |
匹配 數組長度 | $size | db.c.find({‘type’:{“$size”:3}) | |
控制 匹配數組返回數據長度 | $slice | db.c.find({},{‘type’:{“$slice”:3}) db.c.find({},{‘type’:{“$slice”:[3,10]}) |
前三個 type (-3 後三個);也可以是截取(4-13);(除非特別聲明,否則使用“$slice“時將返回所有鍵) |
範圍匹配 | $elemMatch | db.c.find({‘age’:{“$elemMatch”:{‘$gl’:10,’$lt’:20}}) | 解決 age爲數組時; 在數組中範圍查找的 缺陷 |
自定義條件 | $where | db.c.find({$where:function(){if(….){return true}else{return false}) | 需要將文檔從BSON 轉爲js 運行,效率低 慎用 |
遊標
操作 | 方法 | 實例 | 備註 |
---|---|---|---|
限制最大返回數量 | limit | db.c.find().limit(3) | |
略過匹配文檔 | skip | db.c.find().skip(3) | |
排序 | sort | db.c.find().sort({‘a’:1}) | 1升序 -1 降序;不同鍵值類型從小到大:null<Number<String<Object <Array<Blob<Boolean< Date<Timestamp<RegExp |
掃描文檔上線 | $maxScan | db.c.find(a)._addSpecial(“$macScan”:10) | 匹配 到指定數量的文檔,要多少查詢多少 |
掃描文檔上限 | $max | db.c.find({}).max({‘age’:28}) | 最大值 需要建立索引 |
掃描文檔下限 | $min | db.c.find({}).min({‘age’:18}) | 最小值,max min 配合使用 |
顯示磁盤信息 | $showDiskLoc | ._addSpecial(“$showDiskLoc” , true) | |
過濾 鍵 | $showDiskLoc | db.c.find({}).hint({age:1}) | |
快照查詢 | snapshop | db.c.find({}).snapshop() | _index 檢索 避免 文檔重複返回,但影響速度 |