比较运算符
等于: 默认是等于判断,没有运算符
小于: $lt (less than )
小于等于: $lte ( less than equal)
大于: $gt (greater than)
大于等于: $gte (greater than equal)
不等于 : $ne
在stu集合里查找年龄大于等于18的人
db.stu.find({age:{$gte:18}})
范围运算符
使用 $in $nin 判断是否在某个范围内
查询年龄为18 或者 28 的学生
db.stu.find({age:{$in:[18,28]}})
逻辑运算符
and : 在json中多写几个条件即可
年龄是20 并且 家乡是湖南
>db.stu.find({age:20,hometown:湖南})
年龄是20 并且 家乡是湖南,或者广州
>db.stu.find({age:20,hometown:{$in:["湖南","广州"]}})
or: 使用 $or ,值为数组,数组中每个元素为json
查询年龄大于18 或性别为 男 的学生
db.stu.find({$or:[{age:{$gt:18}},{sex:man}]})
组合使用
查询年龄大于18 或性别为 男 ,并且姓名是小明
db.stu.find({$or:[{age:{$gt:18}},{sex:man}],name:"xiaoming"})
支持正则表达式
使用//或者$regex 编写正则表达式
查询products集合中 sku 里面 以 abc 开头的 数据
db.products.find({sku:/^abc/})
查询products集合中 sku 里面 以 789 结尾的 数据
db.products.find({sku:{$regex:"789$"})
limit 和 skip
limit():用于读取指定数量的文档
db.集合名称.find().limit(数字)
查询两条学生信息
db.stu.find().limit(2)
skip(): 用于跳过指定数量的文档
db.集合名称.find().skip(数字)
查询时每次跳过两条学生信息
db.stu.find().skip(2)
也可同时使用
相当于翻页的效果
db.stu.find().limit(2).skip(2)
db.stu.find().skip(2).limit(2)
自定义查询
使用$where 后面写一个函数,返回满足条件的数据
查询年龄大于20的学生
db.stu.find()({
$where:function(){
return this.age>20;
}
})
投影
查询到的返回结果中,只选择必要的字段
对于_id是默认显示的
可以指定某些数据显示某些不显示 指定 1显示 指定0不显示
学生年龄大于18 的 姓名显示,_id不显示
db.stu.find({age:{$gt:18}},{name:1,_id:0})
排序
db.集合名称.find().sort({字段:1.....})
学生年龄按升序排序
db.stu.find().sort({age:1})
学生年龄按降序排序
db.stu.find().sort({age:-1})
注意:true 和 false 也可以排升序降序 -1 true在前 1false在前
统计个数
方法count()用于统计集合中的文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
统计学生中年龄大于18的人数
db.stu.find({age:18}).count()
消除重复
方法distinct()对数据进行去重
db.集合名称.distinct("去重字段",{条件})
>db.stu.distinct('age')
['18','20','28','30']
可以得到一个去重后的数组
查询年龄大于20的学生来自哪里
>db.stu.distinct('hometown',{age:{$gt:20}})
['四川'.'广州']