按条件查询find
db.集合名称.find(<qurey>)
qurey:查询条件
eg:
db.stu.find({"age":18})
查询出age是18的所有数据
db.stu.findOne({"age":18})
查询出age是18的第一个数据
db.stu.find({"age":18}).pretty()
查询出age是18的所有数据,并且将格式美化一下,方便让用户查看
比较运算符
等于: 默认是等于判断,没有运算符
小于: $lt (less than)
小于等于$lte(less than equal)
大于:$gt(greater than)
大于等于: $gte
不等于: $ne
db.stu.find({age:{$gte:18}})
范围运算符
使用"$in", "$nin"
判断是否在某个范围内
查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28,38]}})
逻辑运算符
and: 在json中写多个条件即可
查询年龄大于或等于18,并且性别为true的学生
db.stu.find({age:{$gte:18},gender:true})
or:使用$or,值为数组,数组中每个元素为json
查询年龄大于18,或者性别为false的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:fales}]})
查询年龄大于18或性别为男,并且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:"gj"})
支持正则表达式
使用//或$regex编写正则表达式
db.products.find({sku:/^abc/})
db.products.find({sku:{$regex:'789$'}})
limit和skip
方法limit(): 用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
查询2条学生信息
db.stu.find().limit(2)
方法skip():用于跳过指定数量的文档
db.集合名称.find().skip(NUMBER)
db.stu.find().skip(2)
同时使用
db.stu.find().limit(4).skip(5)
或
#数据量大的啥时候建议使用这种方法
db.stu.find().skip(5).limit(4)
自定义查询
使用$where后面写一个函数,返回满足条件的数据(这是一个js方法)
查询年龄大于30的学生
db.stu.find($where:function(){return this.age>30;})
投影
在查询到的返回结果中,只选择必要的字段
db.集合名称.find({查询条件},{字段名称:1…})
参数为字段与值,值为1表示显示,值为0不显示
特殊:对于_id列,默认是显示的,如果不显示需要明确设置为0
db.stu.find({},{_id:0,name:1,gender:1})
排序
方法sort(),用于对集进行排序
db.集合名称.find().sort({字段:1,…})
参数1为升序
参数-1为降序
根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
统计个数
方法count()用于统计结果集中文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
db.stu.find({gender:true}).count()
db.stu.count({age:{$ge:20},gender:true})
消除重复
方法distinct()对数据进行去重
db.集合名称.distinct(“去重字段”,{条件})
db.stu.distinct("hometown",{age:{$ge:18}})