除了下面的图表,您还可能需要考虑关于MongoDB的常见问题
下表给出了各种SQL和MongoDB术语和概念对比。
SQL术语/概念 | MongoDB术语/概念 |
---|---|
数据库(database) | 数据库(database) |
表(table) | 集合(collection) |
行(row) | 文档(document) or BSON document |
列(column) | 字段(field) |
索引(index) | 索引(index) |
联表(table joins) | $lookup , 内嵌文档 |
主键(primary key) 指定任何唯一列或列组合作为主键。 |
主键(primary key) 在MongoDB中,主键自动设置为_id字段。 |
聚合(aggregation (e.g. group by)) | 聚合管道(aggregation pipeline) 参见 SQL to Aggregation Mapping Chart |
事务(transactions) | 事务(transactions) 小贴士 对于许多场景,反规范化数据模型(嵌入式文档和数组)将继续最适合您的数据和用例,而不是多文档事务。也就是说,对于许多场景,合理地构建建模数据将减少对多文档事务的需求。 |
下表给出了一些数据库可执行文件和相应的MongoDB可执行文件,但是这张表不算完整。
MongoDB | MySQL | Oracle | Informix | DB2 | |
---|---|---|---|---|---|
Database Server | mongod |
mysqld |
oracle |
IDS |
DB2 Server |
Database Client | mongo |
mysql |
sqlplus |
DB-Access |
DB2 Client |
下表给出了各种SQL语句和相应的MongoDB语句。下表中的例子假设了以下条件:
SQL示例假设一个名为people的表。
MongoDB示例假设一个名为people的集合,其中包含以下原型的文档:
下表给出了与表级操作相关的各种SQL语句和相应的MongoDB语句。
SQL 命令 | MongoDB 命令 |
---|---|
隐式创建集合,在第一个insertOne()或insertMany()执行时自动创建。如果没有指定_id字段,主键_id将自动添加
您也可以显式地创建一个集合: |
|
集合不描述或强制其文档的结构;即在收集层面并无结构改变。 但是,在文档级别,updateMany()操作可以使用$set操作符向现有文档添加字段。 |
|
集合不描述或强制其文档的结构;即在收集层面并无结构改变。
但是,在文档级别, |
|
有关使用的方法和操作符的更多信息,请参阅:
下表给出了与将记录插入表相关的各种SQL语句以及相应的MongoDB语句。
SQL INSERT 语句 | MongoDB insertOne() 语句 |
---|---|
更多内容,请查看 db.collection.insertOne()
.
下表给出了与从表中读取记录相关的各种SQL语句以及相应的MongoDB语句。
注意
find()方法总是在返回的文档中包含_id字段,除非通过投影特别排除。下面的一些SQL查询可能包含一个_id字段来反映这一点,即使相应的find()查询中没有包含该字段。
SQL SELECT 语句 | MongoDB find() 语句 |
---|---|
-or- |
|
-or- |
|
or |
|
or |
|
or |
|
or, for distinct value sets that do not exceed the BSON size limit |
|
or |
|
有关使用的方法和操作符的更多信息,请参见
下表给出了与更新表中现有记录相关的各种SQL语句以及相应的MongoDB语句。
SQL Update 语句 | MongoDB updateMany() 语句 |
---|---|
有关示例中使用的方法和操作符的更多信息,请参见:
下表给出了与从表中删除记录相关的各种SQL语句以及相应的MongoDB语句。
SQL Delete 语句 | MongoDB deleteMany() 语句 |
---|---|
有关更多信息,请参见 db.collection.deleteMany()
.
原文:https://docs.mongodb.com/manual/reference/sql-comparison/