1.方法find():查询
db.集合名称.find({条件文档})
例如:查询年龄为20的学生
db.stu.find({age:20})
2.方法findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})
3.方法pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()
比较运算符:
等于:默认是等于判断,没有运算符
小于:$lt (less than)
小于等于:$lte (less than equal)
大于:$gte (greater than)
大于等于:$gte
不等于:$ne
例如:查找年龄大于等于20的学生
db.stu.find({age:{$gte:20}})
范围运算符:
使用"$in","$nin"判断是否在某个范围内
例如:查询年龄为18,28的学生
db.stu.find({age:{$in:[18,28]}})
逻辑运算符:
1. and:在json中写多个条件即可
例如:
查询年龄大于或等于18,并且性别为man的学生
db.stu.find({age:{$gte:18},gender:man})
2. or:使用$or,值为数组,数组中每个元素为json
查询年龄大于18,或者性别为man的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:man}]})
结合运用例子:
查询年龄大于18或性别为man,并且姓名是李明
db.stu.find({$or:[{age:{$gt:18}},{gender:man}],name:'李明'})
支持正则表达式:
使用//或$regex编写正则表达式
查询姓黄的学生
db.stu.find({name:/^黄/})
db.stu.find({name:{$regex:'^黄'}})
limit和skip
1. 方法limit():用于读取指定数量的文档
db.集合名称.find().limit(number)
例如:查询2条学生信息
db.stu.find().limit(2)
2. 方法skip():用于跳过指定数量的文档
db.集合名称.find().skip(number)
例如:db.stu.find().skip(2)
3. 同时使用
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表示显示
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0
db.stu.find({},{_id:0,name:1,gender:1})
排序
方法sort(),用于对集进行排序
db.集合名称.find().sort({字段:1,...})
参数1为升序排序
参数-1为降序排序
例如:根据学号降序,再根据年龄升序
db.stu.find().sort({number:-1,age:1})
统计个数
方法count()用于统计结果集中文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
db.stu.find({gender:man}).count()
db.stu.count({age:{$gt:20},gender:man})
消除重复
方法distinct()对数据进行去重
db.集合名称.distinct('去重字段',{条件})
db.stu.distinct('hometown',{age:{$gt:18}})