MongoDB的查询语法和SQL的SELECT语法做对比

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 对数据库的查询是相当频繁的,而且很多特殊的需求我们都可以通过SQL查询语句构造出来。那么我们平时习惯的SELECT语法实现的各种功能,在MongoDB中是怎么实现的,他们之间是怎么却别的。现在我们就来研究下MongoDB的查询语法和SQL的SELECT语法的不同。

对数据库的查询是相当频繁的,而且很多特殊的需求我们都可以通过SQL查询语句构造出来。那么我们平时习惯的SELECT语法实现的各种功能,在MongoDB中是怎么实现的,他们之间是怎么却别的。现在我们就来研究下MongoDB的查询语法和SQL的SELECT语法的不同。


1.查询所有数据
SQL:SELECT * FROM UserInfo

MongoDB:db.UserInfo.find()


2.查询特定列,其中MongoDB的_id列是默认查询出来的,不管该记录中是否存在userName,Age,Status这三个字段,userName:1就是显示该字段,userName:0就是不显示该字段,所以要不显示_id,就可以加上_id:0即可
SQL:SELECT _id,userName,Age,Status FROM UserInfo
MongoDB:db.UserInfo.find({},{userName:1,Age:1,Status:1})

3.按Status的值为A的这个条件查询所有数据
SQL:SELECT * FROM UserInfo WHERE Status ='A'
MongoDB:db.UserInfo.find({Status:"A"})

4.按Status的值为A的这个条件特定字段数据
SQL:SELECT userName FROM UserInfo WHERE Status ='A'
MongoDB:db.UserInfo.find({Status:"A"},{userName:1,_id:0})

5.查找Status的值不等于A的这个条件 所有字段
SQL:SELECT * FROM UserInfo WHERE Status != "A"
MongoDB:db.UserInfo.find({ Status : { $ne: "A" } })

6.按AND条件查询,有时候我们需要查询出同时2个或以上条件都成立的数据时会用到ADN这个运行符。
SQL:SELECT * FROM UserInfo WHERE Status = "A" AND Age = 45
MongoDB:db.UserInfo.find({ Status : "A" ,Age:45 })

7.按OR条件查询,有时候我们需要查询出2个或以上条件至少一个成立的数据时会用到OR这个运行符。
SQL:SELECT * FROM UserInfo WHERE Status = "A" OR Age = 45
MongoDB:db.UserInfo.find({$or:[{Status : "A"} ,{Age:45}]})

8.按大于号(>)条件查询
SQL:SELECT * FROM UserInfo WHERE Age > 45
MongoDB:db.UserInfo.find({Age:{$gt:45}})

9.按小于号(<)条件查询
SQL:SELECT * FROM UserInfo WHERE Age < 45
MongoDB:db.UserInfo.find({Age:{$lt:45}})

10.查询Age值的范围在25(>)到45(<=)之间
SQL:SELECT * FROM UserInfo WHERE Age > 25 AND Age <=45
MongoDB:db.UserInfo.find({Age:{$gt:25,$lte:45}})

11.LIKE模糊查询userName包含A字母的数据(%A%)
SQL:SELECT * FROM UserInfo WHERE userName LIKE "%A%"
MongoDB:db.UserInfo.find({userName :/A/})

12.LIKE模糊查询userName以字母A开头的数据(A%)。
SQL:SELECT * FROM UserInfo WHERE userName LIKE "A%"
MongoDB:db.UserInfo.find({userName :/^A/})

13.查询结果使用ORDER BY 字段 ASC排序
SQL:SELECT * FROM UserInfo WHERE userName ="Lucy" ORDER BY _id ASC
MongoDB:db.UserInfo.find({userName :"Lucy"}).sort({_id:1})

14.查询结果使用ORDER BY 字段 DESC排序
SQL:SELECT * FROM UserInfo WHERE userName ="Lucy" ORDER BY _id DESC
MongoDB:db.UserInfo.find({userName :"Lucy"}).sort({_id:-1})今天思考的话题是“我们要有把坏事看成好事的能力。” 
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 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
目录
相关文章
|
10天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
50 10
|
4天前
|
SQL 关系型数据库 MySQL
|
7天前
|
SQL 存储 关系型数据库
SQL `CREATE DATABASE` 语法
【11月更文挑战第10天】
23 3
|
12天前
|
SQL 关系型数据库 数据库
sql语法
【10月更文挑战第26天】sql语法
20 5
|
18天前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
14天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
26 0
|
20天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
SQL 缓存 NoSQL
MongoDB-SQL优化
本文主要讲述了MongoDB的SQL优化相关的几个知识点:1)查询优化器原理;2)执行计划解析;3)性能排查手段;4)读写优化
4371 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
105 13