基本方法
操作 | 方法 | 实例 | 备注 |
---|---|---|---|
读取匹配文档 | 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 检索 避免 文档重复返回,但影响速度 |