数据查询
- db.集合名.find({条件文档})
- db.集合名.findOne({条件文档})只查询一个
- db.集合名.find({条件文档}).pretty() 将结果格式化
比较运算符
- 等于:默认判断没有运算符
- 小于:$lt(less than)
- 大于:$gt
- 小于等于,大于等于: $ lte.$ gte
- 不等于: $ne
db.stu.find({age:{$gte:18}})
范围运算符
使用$ in ,$ nin查询是否在某个范围内的,查询年龄为18.28的学生
db.stu.find({age:{$in:[18,28]}})
逻辑运算符
- and:在json中写多个条件即可
DB.STU.find({age:{$gte:18},gender:true})
- or:使用$or,值为数组,数组中每个元素为json
DB.STU.find({$or:[{age:{$gte:18},{gender:false}}]})
- 查询年龄大于18或性别为男,并且姓名为zhang的
db.stu.find({$or:[{age:{$gt:18}},{gender:true}],name:"zhang"})
支持正则表达式
- 使用//或$regex编写正则表达式
limit和skip
- limit():读取制定数量的文档
- skip():跳过制定数量的文档
自定义查询
- 使用$where后面写一个函数,返回满足条件的数据,可以写js语句
- 查询年龄大于30的学生
db.stu.find({$where:function(){
return this.age>30
}})
投影
查询到的返回结果中,只选择必要的字段
db.stu.find({},{_id:0,name:1,gender:1})
表示不需要_id,需要name,gender
默认不显示,但是_id默认显示,所有如果想让它不显示需要指定
排序
按照性别降序,再按照年龄升序
db.stu.find().sort({gender:-1,age:1})
统计个数
db.stu.find({条件}).count()
消除重复
找年龄大于20的学生的家乡都在哪
db.stu.distinct("hometown",{age:{$gt:20}})