mongodb 高级查询(其一)
mongodb 高级用法:
高级查询:
# 查询所有的包含 age:18 的 pretty() 表示格式化输出 db.stu.find({'age':18}).pretty() # 查询第一个 age:18 db.stu.findOne({'age':18}) ''' 比较运算符: 等于,默认是等于判断,没有运算符 小于 $lt 小于或等于 $lte 大于 $gt 大于或等于 $gte 不等于 $ne ''' # 查询 年龄大于 18的 db.stu.find({'age':{$gte:18}}) ''' 范围运算符: 使用$in,$nin 判断是否在某个范围内 ''' # 查询年龄在 18,20 之间的 db.stu.find({'age':{$in:[18,20]}}) ''' 逻辑运算符: 逻辑或:使用$or 逻辑与:默认是逻辑与的关系 ''' # 查询 年纪18 或者名字为 小米的 db.stu.find({$or:[{age:18},{name:'小米'}]}) # 查询 年纪18 与名字为 小米的 db.stu.find({age:18},{name:'小米'}) ''' 正则表达式: 使用/ /或$regex编写正则表达式 ''' # 匹配以 黄 开头的 名称 db.stu.find({name:/^黄/}) db.stu.find({name:{$regex:'^黄'}}})
分页查询:
方法limit():用于读取指定数量的文档
方法skip():用于跳过指定数量的文档
# 显示2条数据 db.stu.find().limit(2) #从第3条开始显示 db.stu.find().skip(2) # 联合使用建议先 skip() 然后 limit() # 相当于分页 查询6 到 8 条数据 从 六条开始,查询四条数据 db.stu.find().limit(4).skip(5)
自定义函数
1,mongodb 就像一个 js 解释器 我们可以写 js 函数
2,$where后面写一个函数,返回满足条件的数据
3,可以使用 js 增加额外的功能
# 查询年龄大于30的学生 db.stu.find({$where : function(){return this.age>20}})
每条数据的过滤:
1,在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
2,值为 1或者true 表示显示 你可以设置 _id:0 _id 就不会显示
# 只显示 name 与 gender 字段 _id字段也会显示 你可以设置 _id:0 db.stu.find({},{name:1, gender:true}) db.stu.find({},{name:true, gender:1,_id:0})
排序:
1,方法sort(),用于对结果集进行排序
2,参数1为升序排列 参数-1为降序排列
3,排序比较的是字符串大小 从开头进行比较
# 根据性别降序,再根据年龄升序 db.stu.find().sort({gender:-1,age:1})
统计个数与去重复:
1,方法count()用于统计结果集中文档条数
2,方法distinct()对数据进行去重
# 统计年龄大于20的男性人数 db.stu.count({age:{$gt:20},gender:true}) # 查找年龄大于18的学生,来自哪些省份 db.stu.distinct('hometown',{age:{$gt:18}})