MongoDB,作为NoSql数据库,主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。MongoDB支持的查询语言特别强大,几乎能实现关系型数据库单表查询的大多数功能。

在这里,我想使用mongodb 4.0以及robo 3T简单记录一下mongoDB的高级查询语法。

以user表为例。

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

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

使用下面语句也是可以查询age=20的数据

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

但是要满足多个条件的话,用{}更合适,如查询age>=20并且age<25的数据

db.getCollection('user').find({"age" : { $gte: 20 ,$lt:25} })

2、范围查找($in,$nin,$all)

$in,$nin跟sql的in/not in 语法类似,筛选满足枚举值范围的数据

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

$all,用来查询条件范围内符合所有条件的数据。与$in有所区别,$in只需要满足其中一条,而$all需要满足所有的条件。

创建1条新数据,用来测试$all,如下

db.getCollection('user').find({ "age" : { $all: [22] } } );

db.getCollection('user').find({ "age" : { $all: [22,25] } } );

执行$all:[22]时,符合age=22的有2条数据,但是$all: [22,25]时,满足age同时为22和25的数据只有name=all这一条。

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

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

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

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

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

4、Null值查询

修改一下user表的数据,进行Null值测试

执行如下代码,查询age为null的数据,可以看出,不止是april这条数据被查出来了,没有age的lin这条数据也被查出来了,因为mongoDB本身对于不存在 age 字段的值默认是null。

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

如果查询时要去掉lin这条数据,可以加上exists进行过滤,如下

db.getCollection('user').find({age:{"$in":[null], "$exists":true}})

5、取模运算($mod)

测试数据如下

如取模10为5的数据

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

6、 查询记录条数(count)

可以看出表中共有 3 条数据

7、设置记录的起点和终点(skip,limit)

db.getCollection('user').find({}).skip(1).limit(2)

跳过1条记录,并只查询2条记录

8、排序(sort)

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

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

mongoDB 高级查询(一)相关推荐

  1. MongoDB高级查询介绍

    title: MongoDB高级查询介绍 date: 2017-12-3 22:14:19 tags: MongoDB MongoDB查询 categories: 数据库 在几乎所有的项目中对数据库的 ...

  2. MongoDB高级查询详细

    前言 前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前 ...

  3. mongoDB高级查询与索引

    整理来自 https://www.shiyanlou.com/courses/running/78 覆盖索引查询 所有的查询字段都是索引的一部分:所有的查询返回字段在同一个索引中. 由于索引存在于RA ...

  4. mongoDB 高级查询之取模查询$mod

    http://hancang2000.i.sohu.com/blog/view/235140698.htm $mod取模运算 查询age取模10等于0的数据 db.student.find( { ag ...

  5. mongoDB高级查询

    2019独角兽企业重金招聘Python工程师标准>>> 条件查询 1.相等 db.inventory.find({ type: "snacks" }) 2.比较 ...

  6. mongodb 高级查询 统计记录条数

    使用count()方法查询表中的记录条数,例如,下面的命令查询表users的记录数量: db.users.find().count();

  7. Mongodb高级查询Aggregation聚合组件分页

    用Mongo的聚合组件Aggregation要用到两个方法skip和limit.skip设置起点(分页的时候不包含起点,从起点的下一行开始),limit设置条数.如: Aggregation.skip ...

  8. python mongodb分页查询_python数据库分页查询语句

    用django将数据从数据库提出并分页展示 不要笑这个太简单噢~~大神们路过的请自动忽略本文-- '''django有自带的分页功能,我这个是自己做的分页,效果其实是一样的. ''' 要把数据提出并展 ...

  9. mongodb基本指令与高级查询指令以及聚合命令

    一.MongoDB中关于database的基本指令 1 ###关于database的基本指令 2 #查询当前使用的数据库指令 3 db 4 5 #查询所有的数据库指令 6 show dbs#或者:sh ...

最新文章

  1. 张勇:做一个透明经济体的CEO
  2. 始终在新标签页中打开文件
  3. Powershell 命令行泄漏下一个 Windows 10 更新内容
  4. Java正则表达式--字符集范围:并集、交集和差集
  5. java putall实现,Java EnumMap putAll()
  6. C语言abc输出最小值改错题,C语言程序设计
  7. 在Spring Boot中使用@Scheduled实现定时任务
  8. ashly理器4.8软件汉化版_AMD 处理器核心比英特尔多还更便宜?英特尔回应
  9. 【从入门到放弃-Java】并发编程-锁-synchronized
  10. iPhone 12或支持全新短距离WiFi标准 数据传输更快
  11. netstat -an|awk '/^tcp/ {++s[$NF]} END {for( a in s) {print a,s[a]}}'
  12. 简单java登录页面android_Android 之路 - RxJava2+Retrofit实现简单登陆
  13. activereport
  14. JPA用TABLE生成主键
  15. 转:tomcat7源码导入Eclipse
  16. 中学办公室计算机管理制度,中学多媒体室使用管理制度条例
  17. 2021-08-03
  18. windriver 自动生成pcie驱动
  19. 一刀工具箱 - 图片转链接(图床)工具
  20. 政府推荐:房屋租赁合同电子版模板出租房个人住房商业租房Word协议书范本

热门文章

  1. 基建狂魔谷歌,如何把数据中心“武装到牙齿”
  2. Oracle OR条件的优化与改写
  3. MySql8.0windows无法启动服务解决方案can‘t creat test file
  4. 90后姑娘因熬夜长出老年斑吓坏网友!拯救熬夜党,智能家居也能出份力?
  5. 盘点国内6大抗DDOS攻击服务商
  6. 地图制图基础(三):地图制作要求
  7. 陪诊系统app开发,一个应用可切换不同身份
  8. 小马哥----高仿苹果6S A236 刷机拆机主板图与开机界面图 更新解锁界面 全网通4G 警惕
  9. 8cm等于多少像素_1寸照片尺寸是多少,对应的像素是多少
  10. 深度学习环境配置10——Ubuntu下的torch==1.7.1环境配置