【收藏】MongoDB 常用查询语句汇总

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 【收藏】MongoDB 常用查询语句汇总

前言


  我们经常使用的MySQL是最流行的关系型数据库管理系统,随着时代的进步,互联网的发展关系型数据库已经不满足于互联网的需求,因此出现了非关系数据库,本文将介绍MongoDB 常用查询语句。


初始MongoDB


  MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

  MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  • database:数据库,SQL中的database含义。
  • collection:数据库表/集合,SQL中的table含义。
  • document:数据记录行/文档,SQL中的row含义。
  • field:数据字段/域,SQL中的column含义。
  • index:索引,SQL中的index含义。
  • primary key:主键,MongoDB自动将_id字段设置为主键,SQL中的primary key含义。


MongoDB特点


  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。


快速开始

查询所有


查询数据库表/集合的所有数据

db.getCollection("test").find();


查询指定字段数字类型

根据userId指定字段查询数据 数字类型

db.getCollection("test").find({"userId":632});


查询指定字段字符串类型

根据goodsNo指定字段查询数据 字符串类型

db.getCollection("test").find({"goodsNo":"789789789789"});


多条件查询

多条件查询指定字段数据信息

db.getCollection("test").find({"userId":632,"supplyGoodsNo":"870000065481"});


查询全数据表中的指定字段数据信息

查询全数据表中的指定字段数据信息,返回主键_id

db.getCollection("test").find({},{"userId":1,"supplyGoodsNo":1,"url":1});


查询全数据表中的指定字段数据信息,不返回主键_id

db.getCollection("test").find({},{"userId":1,"supplyGoodsNo":1,"url":1,"_id":0});


查询数据集中指定区间的数据

查询数据集中指定区间的数据 比较大小的数据 其中大于> 【gt】小于<【gt】 小于< 【gt<lt】 大于等于>=【gte】小于等于<=【gte】 小于等于<= 【gte<=lte】 不等于!=【$ne】

db.getCollection("test").find({"userId":{"$gte":500,"$lte":800}});


查询不等于的数据信息

查询不等于的数据信息

db.getCollection("test").find({"userId":{"$ne":500}});


in 包含

in 包含某些数据

db.getCollection("test").find({"userId":{"$in":[500,600,632]}});


not in 不包含

not in 不包含某些数据

db.getCollection("test").find({"userId":{"$nin":[123,500,4000]}});


or 或者

or 或者 ,相当于SQL中的select * form test where userId = 632 or supplyGoodsNo = "870000065481"语句

db.getCollection("test").find({"$or":[{"userId":632},{"supplyGoodsNo":"870000065481"}]});


mod 取模

mod 取模,相当于SQL中 select * from test where (userId mod 5) = 1语句。

db.getCollection("test").find({"userId":{"$mod":[5,1]}});


not

not语句查询 相当于SQL中 select * from test where not (userId = 600)语句。

db.getCollection("test").find({"$not":{"userId":600}});


空查询

空查询相当于SQL中 select * from test where userId is null 语句。

db.getCollection("test").find({"userId":{"$in":[null],"$exists":true}});


正则查询

正则查询

db.getCollection("test").find({"userId" : /63?/i});


数组查询

对数组的查询,字段url中,既包含"a",又包含"b"的纪录

db.getCollection("test").find({url:{$all:["a","e"]}});


对数组的查询, 字段url中,第4个(从0开始)元素是a的纪录

db.getCollection("test").find({url.3,"a"});


对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用

db.getCollection("test").find({"url" : {"$size" : 3}});


时间比较


比较时间大小,某个时间段之后的数据(方式1)

db.getCollection("test").find({"createTime" : {"$gte" : ISODate("2021-08-12 16:03:06.815")}});


比较时间大小,某个时间段之后的数据(方式2)

db.getCollection("test").find({"createTime":{$gte:new Date(2021,7,12)}});


相关实践学习
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
NoSQL 关系型数据库 MySQL
深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析
在 MongoDB 中,我们使用 find() 和 find_one() 方法来在集合中查找数据,就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样
82 1
|
1月前
|
NoSQL 定位技术 MongoDB
解锁MongoDB索引的秘密:优化查询效率与应对限制的策略
解锁MongoDB索引的秘密:优化查询效率与应对限制的策略
|
11天前
|
NoSQL 关系型数据库 MySQL
优化MongoDB查询
【7月更文挑战第4天】
14 0
|
11天前
|
NoSQL 中间件 MongoDB
MongoDB查询过程
【7月更文挑战第3天】
13 0
|
1月前
|
NoSQL BI MongoDB
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
|
2月前
|
NoSQL 测试技术 定位技术
【MongoDB 专栏】MongoDB 的地理空间索引与位置查询
【5月更文挑战第10天】MongoDB 支持地理空间数据处理,提供2dsphere(球面)和2d(平面)索引,适用于地图导航、物流、社交网络等领域。通过创建索引,可加速位置查询,如查询范围、最近邻及地理空间聚合。案例包括地图应用、物流追踪和社交网络。注意数据准确性、索引优化和性能测试,以发挥其在地理空间处理中的潜力。学习此功能,为应用开发解锁更多可能性!
【MongoDB 专栏】MongoDB 的地理空间索引与位置查询
|
2月前
|
NoSQL MongoDB 数据库
通过优化索引以消除 MongoDB 中的 "查询目标已超过1000个扫描对象/返回的文档数" 警告
MongoDB NoSQL数据库在处理复杂查询时可能出现“查询目标已超过1000个扫描对象/返回的文档数”警告。文章分析了该问题,展示了一个示例集合和相关索引,并提供了查询示例。通过`explain`命令发现查询未有效利用索引。解决方案是遵循ESR规则,创建新索引从而优化查询并消除警告。
75 1
|
1月前
|
监控 NoSQL MongoDB
深度优化:掌握 MongoDB 查询分析的关键技巧
深度优化:掌握 MongoDB 查询分析的关键技巧
|
1月前
|
NoSQL BI MongoDB
MongoDB 数据探索之道:查询文档操作详解
MongoDB 数据探索之道:查询文档操作详解
|
1月前
|
存储 监控 NoSQL
MongoDB 覆盖索引查询:提升性能的完整指南
MongoDB 覆盖索引查询:提升性能的完整指南