MongDB的高级查询

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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管道型、聚合查询方式。后记 

以上是关于MongDB的高级查询的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB的高级使用

MySQL学习之路MySQL高级查询

MySQL高级SQL语句

mongdb查询操作

mongdb操作

Mongodb的索引操作