MongoDB高级查询(一)

高级查询

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的性别
posted @ 2018-08-22 15:45  此时相望不相闻  阅读(132)  评论(0编辑  收藏  举报