MongDB的高级查询

1、条件操作符(<,<=,=,!=,>=,>)

db.getCollection('集合名').find({ "age" : { $gt: 22 } } ); // 大于: 字段> 22 
db.getCollection('集合名').find({ "age" : { $lt: 22 } } ); // 小于: 字段 < 22 
db.getCollection('集合名').find({ "age" : { $ne: 22 } } ); // 等于: 字段 = 22 
db.getCollection('集合名').find({ "age" : { $eq: 22 } } ); // 不等于:字段 != 22 
db.getCollection('集合名').find({ "age" : { $gte: 22 } } ); // 大于等于: 字段 >= 22 
db.getCollection('集合名').find({ "age" : { $lte: 22 } } ); // 小于等于: 字段 <= 22 

2、 逻辑运算符and和or

查询年龄大于18,并且性别是1,相当与and

db.集合名.find({age:{$gte:18},gender:1})

or的用法,或者年龄是20大于等于,或者工资大于5000,或者是HR

db.mycollection1.find( {
    $or: [
        { age: {$gte: 20} },
        { salary: {$gt: 5000} },
        { job: "HR" }
    ]
} )

3、范围查找($in,$nin,$all)相当于sql的in和notIn

db.getCollection('user').find({ "age" : { $in: [22,25] } } ); //age是22或25
db.getCollection('user').find({ "age" : { $nin: [22,25] } } ); //age不是22和25的

db.getCollection('user').find({ "age" : { $all: [22] } } ); //年龄符合22岁的所有用户

4、判断字段是否存在($exists)

查询所有存在 age 字段的记录

db.getCollection('user').find({ "age" : { $exists: true } } ); 

查询所有不存在 age2 字段的记录 

db.getCollection('user').find({ "age2" : { $exists: false } } ); 

5、null查询

db.getCollection('user').find({ "age" : null})

mongoDB本身对于不存在 age 字段的值默认是null。 

6、取模运算( $mod)

db.getCollection('user').find({ age: { $mod : [ 10 , 5 ] }})

表示除以10,余数是5的,age点段都会被查出来 

7、 查询记录条数(count) 

db.mycollection1.find().count()

db.mycollection1.count( {查询条件} )

8、limit和skip

# 限定显示条数
db.mycollection1.find().limit(数量)

# 跳过指定第几条数据
db.mycollection1.find().skip(2)

# 混合使用
db.mycollection1.find().limit(10).skip(3)

 

9、自定义函数查询

$where: function(){...}

列如:查询返回年龄大于等于18的用户

db.mycollection1.find( {
    $where: function() {
        return this.age >= 18;
    }
} )

10、排序sort

sort用于排序,-1表示降序,1表示升序,也可以多个字段排序

db.getCollection('user').find({}).sort({age:-1})

11、投影:查询条件中只查询选择的字段

参数为字段与值,值为1表示显示,值为0不显示

db.stu.find({查询条件},{_id:0,name:1,gender:1}) 

12、去重distinct()函数

 

# 格式为:
db.集合名.distinct( "指定字段", {查询条件} )

# 如
db.mycollection1.distinct( 
    "job", 
    { age: {$lt: 40} } 
)

13、正则表达

有两种方法:

  • /表达式内容/
  • {$regex: "表达式内容"}

 

db.mycollection1.find( {
    name: /^Ja\w+$/
} )

# 或
db.mycollection1.find( {
    name: {
        $regex: "/^Jaso\w?$"
    }
} )

Aggregation是MongoDB特有的一种Pipline管道型、聚合查询方式。后记 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值