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}})