①比较运算符:
等于:默认是等于判断,没有运算符
小于:$lt(less than)
小于等于:$lte(less than equal)
大于:$gt(greater than)
大于等于:$gte(greater than equal)
不等于:$ne(not equal)
db.stu.find({age:{$gte:18}})
②逻辑运算符:
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:flase}}]})
查询年龄大于18或性别为男生,并且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18},{gender:true}}],name:"gj"})
③范围运算符:
使用“$in”,"$nin"判断是否在某个范围内,查询年龄为18,28的学生
db.stu.find({age:{$in:[18,28]}})
④支持正则表达式
使用//或regex编写正则表达式,查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:"^黄"}})
⑤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后面写一个函数,返回满足条件的数据
查询年龄大于30的学生
//db.stu.find(){
$where:function(){
return this.age>30;
}
}
⑦投影:
在查询到的返回结果中,只选择必要的字段db.集合名称.find({},{字段名称:1...})
参数为字段值,值为1表示显示,值为0不显
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0
⑧排序:
方法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:{$gt:20},gender:true}
⑩消除重复
方法distinct()对数据进行去重
db.集合名称。distinct("去重字段",{条件})
db.stu.distinct(“hometown,{age:{$gt:18}}”)