SQL转 MongoDB语法速查表
翻译整理:qqxufo
我的博客:http://hhxblog.leanote.com/
吐槽:学习MongoDB的时候,在官网看到了SQL 到 MongoDB 的语法转换图。觉得内容不错,所以打算将其整理出来以便日后的学习和使用。
PS:右上角自带目录,可以进行速查。
术语和概念
database | database |
table | collection |
row | document 或 BSON document |
column | field |
index | index |
table连接 | document嵌套和连接 |
primary key | primary key |
指定单独一列或者列组合作为primary key | 在MongoDB中primary key会自动设置到——id field中 |
aggregation(例如 group by) | aggregation pipeline |
语法关系
假设存在名为user的collection,它的文档包含如下属性
{
_id:ObjectId("509a8fb2f3f4948bd2f983a0"),
user_id:"abc123",
age:55,
status:'A'
}
新建表/集合
SQL
CREATE TABLE users (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)
MongoDB
// 在第一次进行insert()操作的时候会进行隐式创建。
// 如果不指定_id字段的话,_id将会被自动创建
db.users.insert({
user_id:"abc123",
age:55,
status:"A"
})
// 当然也可以单独创建一个collection
db.createCollection("users")
添加新列/字段
SQL
ALTER TABLE users
ADD join_date DATETIME
MongoDB
// collection并不会对它的document结构进行约束
// 在collection层面上并不会有结构的变化
// 但是在document层面上,update()操作可以利用$set为现有的document添加field
db.users.update(
{},
{ $set:{ join_date:newDate()}},
{ multi:true}
)
删除列/字段
SQL
ALTER TABLE users
DROP COLUMN join_date
MongoDB
// collection并不会对它的document结构进行约束
// 在collection层面上并不会有结构的变化
// 但是在document层面上,update()操作可以利用$unset为现有的document移除field
db.users.update(
{},
{ $unset:{ join_date:""}},
{ multi:true}
)
创建索引
SQL
CREATE INDEX idx_user_id_asc
ON users(user_id)
MongoDB
db.users.createIndex({ user_id:1})
创建联合索引
SQL
CREATE INDEX
idx_user_id_asc_age_desc
ON users(user_id, age DESC)
MongoDB
db.users.createIndex({ user_id:1, age:-1})
删除表/集合
SQL
DROP TABLE users
MongoDB
db.users.drop()
插入
SQL
INSERT INTO users(user_id,
age,
status)
VALUES ("bcd001",
45,
"A")
MongoDB
db.users.insert(
{ user_id:"bcd001", age:45, status:"A"}
)
查询所有的数据
SQL
SELECT *
FROM users
MongoDB
db.users.find()
查询所有指定字段的数据(查询主键)
SQL
SELECT id,
user_id,
status
FROM users
MongoDB
db.users.find(
{},
{ user_id:1, status:1}
)
查询所有指定字段的数据(不查询主键)
SQL
SELECT user_id, status
FROM users
MongoDB
db.users.find(
{},
{ user_id:1, status:1, _id:0}
)
条件查询(字段为相应的内容)
SQL
SELECT *
FROM users
WHERE status ="A"
MongoDB
db.users.find(
{ status:"A"}
)
条件查询指定字段(字段为相应的内容)
SQL
SELECT user_id, status
FROM users
WHERE status ="A"
MongoDB
db.users.find(
{ status:"A"},
{ user_id:1, status:1, _id:0}
)
条件查询(字段不含相应的内容)
SQL
SELECT *
FROM users
WHERE status !="A"
MongoDB
db.users.find(
{ status:{ $ne:"A"}}
)
条件查询(与查询)
SQL
SELECT *
FROM users
WHERE status ="A"
AND age =50
MongoDB
db.users.find(
{ status:"A",
age:50}
)
条件查询(或查询)
SQL
SELECT *
FROM users
WHERE status ="A"
OR age =50
MongoDB
db.users.find(
{ $or:[{ status:"A"},
{ age:50}]}
)
条件查询(大于关系)
SQL
SELECT *
FROM users
WHERE age >25
MongoDB
db.users.find(
{ age:{ $gt:25}}
)
条件查询(小于关系)
SQL
SELECT *
FROM users
WHERE age <25
MongoDB
db.users.find(
{ age:{ $lt:25}}
)
条件查询(区间关系)
SQL
SELECT *
FROM users
WHERE age >25
AND age <=50
MongoDB
db.users.find(
{ age:{ $gt:25, $lte:50}}
)
模糊查询(包含)
SQL
SELECT *
FROM users
WHERE user_id like "%bc%"
MongoDB
db.users.find({ user_id:/bc/})
模糊查询(起始)
SQL
SELECT *
FROM users
WHERE user_id like "bc%"
MongoDB
db.users.find({ user_id:/^bc/})
升序处理查询结果
SQL
SELECT *
FROM users
WHERE status ="A"
ORDER BY user_id ASC
MongoDB
db.users.find({ status:"A"}).sort({ user_id:1})
降序处理查询结果
SQL
SELECT *
FROM users
WHERE status ="A"
ORDER BY user_id DESC
MongoDB
db.users.find({ status:"A"}).sort({ user_id:-1})
统计(所有条目)
SQL
SELECT COUNT(*)
FROM users
MongoDB
db.users.count()
// 或者
db.users.find().count()
统计(指定字段)
SQL
SELECT COUNT(user_id)
FROM users
MongoDB
db.users.count({ user_id:{ $exists:true}})
// 或者
db.users.find({ user_id:{ $exists:true}}).count()
统计符合指定条件的条目
SQL
SELECT COUNT(*)
FROM users
WHERE age >30
MongoDB
db.users.count({ age:{ $gt:30}})
// 或者
db.users.find({ age:{ $gt:30}}).count()
去重查询
SQL
SELECT DISTINCT(status)
FROM users
MongoDB
db.users.distinct("status")
查询单条数据
SQL
SELECT *
FROM users
LIMIT 1
MongoDB
db.users.findOne()
// 或者
db.users.find().limit(1)
分页并跳过指定页数
SQL
SELECT *
FROM users
LIMIT 5
SKIP 10
MongoDB
db.users.find().limit(5).skip(10)
语法性能测试
SQL
EXPLAIN SELECT *
FROM users
WHERE status ="A"
MongoDB
db.users.find({ status:"A"}).explain()
更新(静态值)
SQL
UPDATE users
SET status ="C"
WHERE age >25
MongoDB
db.users.update(
{ age:{ $gt:25}},
{ $set:{ status:"C"}},
{ multi:true}
)
更新(动态值)
SQL
UPDATE users
SET age = age +3
WHERE status ="A"
MongoDB
db.users.update(
{ status:"A"},
{ $inc:{ age:3}},
{ multi:true}
)
条件删除
SQL
DELETE FROM users
WHERE status ="D"
MongoDB
db.users.remove({ status:"D"})
删除(所有记录)
SQL
DELETE FROM users
MongoDB
db.users.remove({})
相关推荐
对于后端开发者,数据库操作是一个绕不开的话题,SQL速查表能提供常见的查询语句、事务操作等快速参考,而NoSQL数据库如MongoDB的速查表则能帮助开发者高效地进行文档查询和索引优化。在数据科学领域,Pandas库的速...
sql到mongodb 将SQL表转换为MongoDB集合的Java工具 轻松将 MSSQL 表转换为 MongoDB。 从下载 SQL Server JDBC 驱动程序 将 SQLJDBC4.jar 文件放在同一文件夹中。 一次指定 TABLE NAME 和 NUMBER OF ROWS 进行导入...
3. JavaScript速查:包括基本语法、DOM操作、事件处理、AJAX请求、ES6+新特性,以及常见的JavaScript库和框架如jQuery、React、Vue等。 4. 前端框架速查:介绍Angular、React、Vue等主流框架的基本用法、组件系统和...
MongoDB是一种流行的开源、分布式文档型数据库,属于NoSQL数据库的一种。它以其灵活性、高性能、易用性和可扩展性而受到广泛欢迎。在MongoDB中,掌握特定的命令是进行数据管理的关键。以下是对MongoDB中`map-reduce`...
mongodb数据库语法学习,快速掌握mongodb的使用。
6. 应用层调整:如果应用程序依赖于SQL Server特有的功能,如SQL查询、存储过程等,可能需要在应用程序中进行相应的调整以适应MongoDB的API和查询语法。 7. 性能优化:MongoDB支持索引,迁移后根据查询需求创建合适...
MongoDB 查询语法详解 MongoDB 是一个基于NoSQL的数据库,具有高效、灵活、易扩展等特点。在 MongoDB 中,查询语法是非常重要的一部分,本文将对 MongoDB 的查询语法进行详细的介绍。 基本查询语法 在 MongoDB 中...
1. **SQL与MongoDB查询语法的差异**:尽管可以通过某些工具将SQL语句转换成MongoDB查询语句,但仍存在一定的局限性。例如,MongoDB不支持所有SQL中的特性,如JOIN操作。 2. **性能考虑**:某些SQL风格的操作可能不会...
sql到mongodb Node.js脚本,用于将SQL数据库转换为MongoDB数据库。 产品特点 自动检测每个SQL表的主键,并将其复制到MongoDB _id字段。 (可选)使用MongoDB ObjectId重新映射替换键和主键,并重新映射外键。 ...
MongoDB 的数据操作语法与SQL有一定的相似性,但更倾向于面向对象的查询语言。以下是一些基本操作: - `db.AddUser(username, password)`:添加新用户到数据库。 - `db.auth(username, password)`:进行身份验证以...
本软件使用c#编写,是SQL转存MongoDB的工具,可独立运行,也可定时运行,利用sql数据库时间戳字段进行更新采集区分。 本软件综合了,windows服务控制(安装卸载等),windows服务启动程序(服务控制定时运行程序),...
Mongodb 查询到 sql 查询转换器。 示例:在:db.user.find({name: 'julio'}); out: SELECT * FROM user WHERE name = 'julio'; 在:db.user.find({_id: 23113},{name: 1, age: 1}); out: SELECT name, age FROM ...
MongoDB的聚合框架允许对数据进行处理,类似于SQL的GROUP BY。它包括`$match`, `$group`, `$sort`, `$project`, `$skip`, `$limit`, `$unwind`, `$lookup`, `$bucket`等阶段。 7. MapReduce: 提供了MapReduce...
mongodb 的常用命令,常用语法,都是日常工作中汇总,你可以下载当工具使用,方便查阅,非常有用。
SQL到SQL或SQL到MongoDb转换工具NetCoreStack DataTransform是一个工具,供应用程序开发人员,数据分析师和数据库管理员将各种数据类型从不同SQL提供程序转换并收集到SQL或MongoDb数据库。构建和测试为您的开发环境...
3. SQL语法:需要熟悉SQL的基本语法,包括SELECT、INSERT、UPDATE和DELETE语句,以及JOIN、WHERE、GROUP BY、ORDER BY等子句的使用。 4. PHP操作MongoDB:PHP提供了mongodb扩展来与MongoDB交互,包括创建连接、执行...
程序员或设计师能用上的91份速查表,包括各种语言和技术。包括Actionscript Apache Ant ASP C C# C++ Delphi Java Javascript Perl ...
9. **BSON语法**:MongoDB查询表达式以JSON对象形式表示,但实际上使用的是一种二进制格式——BSON。 #### 具体查询示例对比 1. **创建表(Create Table)** - **SQL**:`CREATE TABLE USERS (a NUMBER, b NUMBER);...
这是将MongoDB查询( find() )转换为SQL的简单工具 程序包将字符串作为输入,并将字符串作为输出。 它仅支持db.find方法,并在使用其他方法时引发异常。 入门 正在安装 npm i mongo-to-sql-converter 用法 var ...
程序员或设计师能用上的91份速查表,包括各种语言和技术。包括Actionscript Apache Ant ASP C C# C++ Delphi Java Javascript Perl ...