高级查询
1. and(逗号)
db.col_name.find({'条件1','条件2'})
# 例1:
db.col_name.find({'name':'ps','sex':'nan'}).pretty()
# 例2:
db.col_name.find({age:{$gte:18,gender:'nan'}})
2. or (注意中括号)
$or:[{条件1},{条件2}]
db.col_name.find($or:[{'desc':'数据库'},{'title':'mysql'}]).pretty()
db.col_name.find({$or: [{age:{$gt:18}}, {gender:"nan"}]})
3. and和or一起使用
# 查询年龄大于18或性别男的学生,并且名字为xx
db.test.find({$or:[{age:{$gte:18}}, {gender:'nan'}], name:'xx'})
运算符:
1.比较运算符
小于 $lt
小于等于 $lte
大于 $gt
大于等于 $gte
等于 默认
不等于 $ne
例:db.col_name.find({age: {$gt:5}})
# 年龄大于5的
2. 范围运算符
$in
$nin
# 查询年龄为18,28的学生
db.col_name.find(age:{$in:[18, 28]})
3. 支持正则表达式
使用 // 或 $regex
# 查询姓黄的学生
db.col_name.find({name:/^黄/})
db.col_name.find({name:{$regex:'^黄'}})
4.自定义查询
使用$where 后面写一个函数,返回满足条件的数据
# 查询年龄大于18的学生
db.col_name.find({$where:function(){return this.age>20}})
5.limit
# 查询,拿一条,跳过一条 (不分先后)
db.col_name.find().limit(1).skip(2)
# skip() 用于跳过指定数量的文档
6.投影
db.col_name.find({},{name:1, gender:0})
第二个字段:
1 显示该字段
0 不显示,
不设置即为不显示
7.排序 sort()
db.col_name.find().sort({age:-1})
默认为1
可以为 -1
8.统计个数 count()
db.col_name.count({age:{$gt}:20})
#统计年龄大于20的个数
9.去重 distinct()
db.test.destinct('去重字段',{条件})
db.test.distinct('gender', {age:{$gt:20}})
# 查找年龄大于20的性别