MongoDB-CN-Manual
  • MongoDB中文手册|官方文档中文版
  • MongoDB用户手册说明
  • MongoDB简介
    • 入门
    • 数据库和集合
      • 视图
      • 按需物化视图
      • 封顶集合
      • 时间序列集合
    • 文档
    • BSON类型
      • Comparison and Sort Order
      • MongoDB Extended JSON (v2)
      • MongoDB Extended JSON (v1)
  • 安装 MongoDB
    • 安装MongoDB社区版
      • 在Linux上安装MongoDB社区版
      • 在macOS上安装MongoDB社区版
      • 在Windows上安装MongoDB社区版
    • 安装MongoDB企业版
      • 在Linux上安装MongoDB企业版
      • 在Mac OS安装MongoDB企业版
      • 在Windows安装MongoDB企业版
      • 使用Docker安装MongoDB企业版
    • 将社区版MongoDB升级到企业版MongoDB
    • 验证MongoDB软件包的完整性
  • The mongo Shell
    • 配置mongo Shell
    • 使用 mongo Shell帮助
    • 为mongo Shell编写脚本
    • mongo Shell中的数据类型
    • mongo Shell 快速参考
  • MongoDB CRUD操作
    • 插入文档
      • 插入方法
    • 查询文档
      • 在mongo Shell中迭代游标
      • 从查询返回的项目字段
      • 查询嵌入式文档数组
      • 查询数组
      • 查询空字段或缺少字段
      • 查询嵌入/嵌套文档
    • 更新文档
      • 更新方法
      • 聚合管道更新
    • 删除文档
      • 删除方法
    • 地理空间查询
      • 用地理空间查询查找餐馆
      • GeoJSON对象
    • 批量写入操作
    • 可重试写入
    • 可重试读取
    • SQL到MongoDB的映射图表
    • 文本搜索
      • 文本索引
      • 文本索引操作
      • 集合管道中的文本索引
      • 文本索引语言
    • Read Concern读关注
      • 读关注 "local"
      • 读关注 "available"
      • 读关注 "majority"
      • 读关注 "linearizable"
      • 读关注 "snapshot"
    • Write Concern写关注
    • MongoDB CRUD概念
      • 原子性和事务
      • 读隔离性,一致性和近因性
        • 因果一致性和读写关注
      • 分布式查询
      • 通过findAndModify进行线性化读取
      • 查询计划
      • 查询优化
        • 评估当前操作性能
        • 优化查询性能
        • 写操作性能
        • 说明结果
      • 分析查询表现
      • Tailable 游标
  • MongoDB聚合
    • 聚合管道
      • 聚合管道优化
      • 聚合管道限制
      • 聚合管道和分片集合
      • 使用 Zip Code 数据集进行聚合
      • 使用用户首选项数据进行聚合
    • Map-Reduce
      • Map-Reduce 和分片集合
      • Map-Reduce 并发
      • Map-Reduce 示例
      • 执行增量 Map-Reduce
      • 对 Map Function 进行故障排除
      • 排除 Reduce Function 问题
      • Map-Reduce转换到聚合管道
    • 聚合参考
      • 聚合管道快速参考
      • 聚合命令
      • 聚合命令对比
      • 聚合表达式中的变量
      • SQL 到聚合映射图表
  • MongoDB数据模型
    • 数据建模介绍
    • 模式验证
    • 数据模型设计
      • 一对一嵌套关系模型
  • MongoDB事务
  • MongoDB事务
    • 驱动程序 API
    • 生产注意事项
    • 生产注意事项 (分片集群)
    • 事务操作
  • MongoDB索引
    • 单字段索引
    • 复合索引
    • 多键索引
      • 多键索引范围
    • 文本索引
      • 为文本索引指定语言
      • 指定文本索引的名称
      • 用权重控制搜索结果
      • 限制扫描条目的数量
    • 通配符索引
      • 通配符索引限制
    • 2dsphere 索引
      • 查询一个2dsphere索引
    • 2d 索引
      • 创建一个2d索引
      • 查询一个2d索引
      • 2d索引内部
      • 使用球面几何计算距离
    • geoHaystack 索引
      • 创建Haystack索引
      • 查询Haystack索引
    • 哈希索引
    • 索引特性
      • TTL 索引
        • 通过设置TTL使集合中的数据过期
      • 唯一索引
      • 部分索引
      • 不分大小写索引
      • Sparse 索引
    • 在填充的集合上建立索引
      • 在副本集上建立滚动索引
      • 在分片群集上建立滚动索引
    • 索引交集
    • 管理索引
    • 衡量索引使用
    • 索引策略
      • 创建索引来支持查询
      • 使用索引对查询结果进行排序
      • 确保索引适合RAM
      • 创建以确保选择性的查询
    • 索引参考
  • MongoDB安全
    • 安全检查列表
    • 启用访问控制
    • 身份验证
      • 用户
        • 添加用户
        • 权限认证机制
          • SCRAM
            • 用x.509证书来认证客户端
    • 审计
      • 配置审计过滤器
      • 配置审计
      • 系统事件审计消息
    • 网络和配置强化
    • 安全参考
      • system.roles集合
      • system.users集合
      • 资源文档
      • 权限操作
    • 附录
      • 附录-A-用于测试的 OpenSSl CA 证书
      • 附录-B-用于测试的OpenSSL服务器证书
      • 附录-C-用于测试的OpenSSL客户端证书
  • Change Streams变更流
    • 变更流生产建议
    • 变更事件
  • MongoDB复制
    • 副本集成员
    • 副本集日志
    • 副本集数据同步
    • 副本集部署架构
    • 副本集成员配置教程
    • 副本集维护教程
    • MongoDB复制参考
  • MongoDB分片
    • 分片集群组件
    • 分片键
    • 哈希分片
    • 范围分片
    • 区
      • 管理分片区
      • 按位置细分数据
      • 用于更改SLA或SLO的分层硬件
      • 按应用或客户细分数据
      • 仅插入工作负载的分布式本地写入
      • 管理分片区
    • 使用块进行数据分区
      • 在分片集群中拆分数据块
    • 分片管理
      • 查看集群设置
    • 重启一个分片集群
    • [把一个分片集群迁移到不同的硬件](fen-pian/migrate-a -sharded-cluster-to-different-hardware.md)
    • 分片参考
  • MongoDB管理
    • 产品说明
    • 操作检查列表
    • 开发检查列表
    • 配置和维护
    • 性能
    • 数据中心意识
      • MongoDB部署中的工作负载隔离
      • 区
        • 管理分片区
        • 按位置细分数据
        • 用于更改SLA或SLO的分层硬件
        • 按应用或客户细分数据
        • 仅插入工作负载的分布式本地写入
        • 管理分片区
    • MongoDB备份方法
    • MongoDB监控
  • MongoDB存储
    • 存储引擎
      • WiredTiger 存储引擎
      • 内存存储引擎
    • 日志记录
      • 管理日志记录
        • GridFS
        • FAQ:MongoDB 存储
  • MongoDB参考
    • 运算符
      • 查询与映射运算符
        • 比较查询运算符
          • $eq
          • $gt
          • $gte
          • $in
          • $lt
          • $lte
          • $ne
          • $nin
        • 逻辑查询运算符
          • $and
          • $not
          • $nor
          • $or
        • 元素查询运算符
        • 评估查询运算符
        • 地理空间查询运算符
        • 数组查询运算符
        • 按位查询运算符
        • $comment
        • 映射运算符
      • 更新运算符
        • 字段更新运算符
        • 数组更新运算符
        • 按位更新运算符
      • 聚合管道阶段
      • 聚合管道操作符
        • $abs (aggregation)
        • $acos (aggregation)
        • $acosh (aggregation)
        • $add (aggregation)
        • $addToSet (aggregation)
        • $allElementsTrue (aggregation)
        • $and (aggregation)
        • $anyElementTrue (aggregation)
        • $arrayElemAt (aggregation)
        • $arrayToObject (aggregation)
        • $asin (aggregation)
        • $asinh (aggregation)
        • $atan (aggregation)
        • $atan2 (aggregation)
        • $atanh (aggregation)
        • $avg (aggregation)
        • $ceil (aggregation)
        • $cmp (aggregation)
        • $concat (aggregation)
        • $concatArrays (aggregation)
        • $cond (aggregation)
        • $convert (aggregation)
        • $cos (aggregation)
        • $dateFromParts (aggregation)
        • $dateToParts (aggregation)
        • $dateFromString (aggregation)
        • $literal (aggregation)
      • 查询修饰符
    • 数据库命令
      • 聚合命令
      • 地理空间命令
      • 查询和写操作命令
      • 查询计划缓存命令
      • 认证命令
      • 用户管理命令
      • 角色管理命令
      • 复制命令
      • 分片命令
      • 会话命令
      • 管理命令
      • 诊断命令
      • 免费监控命令
      • 系统事件审计命令
    • mongo Shell 方法
      • 集合方法
        • db.collection.aggregate()
        • db.collection.bulkWrite()
        • db.collection.copyTo()
        • db.collection.count()
        • db.collection.countDocuments()
        • db.collection.estimatedDocumentCount()
        • db.collection.createIndex()
        • db.collection.createIndexes()
        • db.collection.dataSize()
        • db.collection.deleteOne()
        • db.collection.deleteMany()
        • db.collection.distinct()
        • db.collection.drop()
        • db.collection.dropIndex()
        • db.collection.dropIndexes()
        • db.collection.ensureIndex()
        • db.collection.explain()
        • db.collection.find()
        • db.collection.findAndModify()
        • db.collection.findOne()
        • db.collection.findOneAndDelete()
        • db.collection.findOneAndReplace()
        • db.collection.findOneAndUpdate()
        • db.collection.getIndexes()
        • db.collection.getShardDistribution()
        • db.collection.getShardVersion()
        • db.collection.insert()
        • db.collection.insertOne()
        • db.collection.insertMany()
        • db.collection.isCapped()
        • db.collection.latencyStats()
        • db.collection.mapReduce()
        • db.collection.reIndex()
        • db.collection.remove()
        • db.collection.renameCollection()
        • db.collection.replaceOne()
        • db.collection.save()
        • db.collection.stats()
        • db.collection.storageSize()
        • db.collection.totalIndexSize()
        • db.collection.totalSize()
        • db.collection.update()
        • db.collection.updateOne()
        • db.collection.updateMany()
        • db.collection.watch()
        • db.collection.validate()
    • MongoDB中的限制与阈值
    • MongoDB系统集合
    • 词汇表
    • 默认的MongoDB端口
    • 默认的MongoDB读/写关注
    • 服务器会话
  • MongoDB FAQ
    • FAQ: MongoDB基础知识
    • FAQ: MongoDB索引
    • FAQ: MongoDB并发
    • FAQ: MongoDB分片
    • FAQ: MongoDB复制和副本集
    • FAQ: MongoDB存储
    • FAQ: MongoDB诊断
  • MongoDB 版本管理
  • 联系我们
    • Tapdata Cloud
    • MongoDB中文社区
    • 社区合作伙伴—锦木信息
由 GitBook 提供支持
在本页
  • 术语和概念
  • 可执行文件
  • 例子
  • 创建和修改
  1. MongoDB CRUD操作

SQL到MongoDB的映射图表

上一页可重试读取下一页文本搜索

最后更新于3年前

在本页面

除了下面的图表之外,您可能需要考虑有关MongoDB的常见问题的常见问题部分。

术语和概念

下表介绍了各种SQL术语和概念以及相应的MongoDB术语和概念。

SQL术语/概念
MongoDB术语/概念

database

table

row

column

index

table joins

primary key (指定任何唯一的列或列组合作为主键。)

aggregation (e.g. group by)

SELECT INTO NEW_TABLE

MERGE INTO TABLE

Transactions

可执行文件

下表展示了一些数据库可执行文件和相应的MongoDB可执行文件。这个表格并不是详尽无遗的。

MongoDB
MySQL
Oracle
Informix
DB2

Database Server

mysqld

oracle

IDS

DB2 Server

Database Client

mysql

sqlplus

DB-Access

DB2 Client

例子

下表展示了各种SQL语句和相应的MongoDB语句。表中的例子假设以下条件:

  • SQL示例假设有一个名为people的表。

  • MongoDB示例假设一个名为people的集合,它包含以下原型的文档:

 { 
       _id: ObjectId("509a8fb2f3f4948bd2f983a0"),
       user_id: "abc123",
       age: 55,
       status: 'A'
 }

创建和修改

下表展示了与表级操作相关的各种SQL语句以及相应的MongoDB语句。

SQL Schema语句
MongoDB Schema语句

CREATE TABLE people ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) )

ALTER TABLE people ADD join_date DATETIME

ALTER TABLE people DROP COLUMN join_date

CREATE INDEX idx_user_id_asc ON people(user_id)

db.people.createIndex( { user_id: 1 } )

CREATE INDEX idx_user_id_asc_age_desc ON people(user_id, age DESC)

db.people.createIndex( { user_id: 1, age: -1 } )

DROP TABLE people

db.people.drop()

有关使用的方法和运算符的更多信息,请参见:

另看:

插入

下表显示了与将记录插入表和相应的MongoDB语句有关的各种SQL语句。

SQL INSERT语句

MongoDB insertOne() Statements

INSERT INTO people(user_id, age, status) VALUES ("bcd001", 45, "A")

db.people.insertOne( { user_id: "bcd001", age: 45, status: "A" } )

也可以看看:

选择

下表展示了与从表中读取记录相关的各种SQL语句以及相应的MongoDB语句。

注意

SQL SELECT 语句
MongoDB find() 语句

SELECT *FROM people

db.people.find()

SELECT id, user_id, status FROM people

db.people.find( { }, { user_id: 1, status: 1 } )

SELECT user_id, status FROM people

db.people.find( { }, { user_id: 1, status: 1, _id: 0 } )

SELECT FROM people *WHERE status = "A"

db.people.find( { status: "A" } )

SELECT user_id, status FROM people WHERE status = "A"

db.people.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 } )

SELECT FROM people *WHERE status != "A"

db.people.find( { status: { $ne: "A" } } )

SELECT FROM people WHERE status = "A" *AND age = 50

db.people.find( { status: "A", age: 50 } )

SELECT FROM people WHERE status = "A" *OR age = 50

db.people.find( { $or: [ { status: "A" } , { age: 50 } ] } )

SELECT FROM people *WHERE age > 25

db.people.find( { age: { $gt: 25 } } )

SELECT FROM people *WHERE age < 25

db.people.find( { age: { $lt: 25 } } )

SELECT FROM people WHERE age > 25 *AND age <= 50

db.people.find( { age: { $gt: 25, $lte: 50 } } )

SELECT FROM people WHERE user_id *like "%bc%"

db.people.find( { user_id: /bc/ } )_ _or db.people.find( { user_id: { $regex: /bc/ } } )

SELECT FROM people WHERE user_id *like "bc%"

db.people.find( { user_id: /^bc/ } )_ _or db.people.find( { user_id: { $regex: /^bc/ } } )

SELECT FROM people WHERE status = "A" ORDER BY user_id *ASC

db.people.find( { status: "A" } ).sort( { user_id: 1 } )

SELECT FROM people WHERE status = "A" ORDER BY user_id *DESC

db.people.find( { status: "A" } ).sort( { user_id: -1 } )

SELECT COUNT() *FROM people

db.people.count() or db.people.find().count()

SELECT COUNT(user_id) FROM people

db.people.count( { user_id: { $exists: true } } )_ _or db.people.find( { user_id: { $exists: true } } ).count()

SELECT COUNT() FROM people *WHERE age > 30

db.people.count( { age: { $gt: 30 } } ) or db.people.find( { age: { $gt: 30 } } ).count()

SELECT DISTINCT(status) FROM people

SELECT FROM people *LIMIT 1

db.people.findOne() or db.people.find().limit(1)

SELECT FROM people *LIMIT 5 SKIP 10

db.people.find().limit(5).skip(10)

EXPLAIN SELECT FROM people *WHERE status = "A"

db.people.find( { status: "A" } ).explain()

有关使用的方法和运算符的更多信息,请参见:

另看:

更新记录

下表显示了与更新表中的现有记录和相应的MongoDB语句有关的各种SQL语句。

SQL Update Statements

MongoDB updateMany() Statements

UPDATE people SET status = "C" WHERE age > 25

db.people.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } } )

UPDATE people SET age = age + 3 WHERE status = "A"

db.people.updateMany( { status: "A" } , { $inc: { age: 3 } } )

有关示例中使用的方法和运算符的更多信息,请参见:

另看:

删除记录

下表显示了与从表中删除记录和相应的MongoDB语句有关的各种SQL语句。

SQL Delete Statements

MongoDB deleteMany() Statements

DELETE FROM people WHERE status = "D"

db.people.deleteMany( { status: "D" } )

DELETE FROM people

db.people.deleteMany({})

另看:

进一步阅读

下载内容包括以下资源:

  • 演示使用MongoDB进行数据建模的方法

  • 白皮书涵盖了从RDBMS数据模型迁移到MongoDB的最佳实践和注意事项

  • 参考MongoDB模式及其等效RDBMS

  • 应用程序现代化记分卡

译者:杨帅

校对:杨帅

or document

, 嵌入文档

(在MongoDB中,主键自动设置为_id字段。)

aggregation pipeline See the .

See the .

(Available starting in MongoDB 4.2) See the .

在许多情况下,非规范化数据模型(嵌入式文档和数组) 将继续是您数据和用例的最佳选择,而不是多文档事务。 也就是说,在许多情况下,对数据进行适当的建模将最 大程度地减少对多文档交易的需求。

隐式创建的第一个或操作。如果没有指定**_id**字段,则会自动添加主键_id。 db.people.insertOne( { user_id: "abc123", age: 55, status: "A" } ) 但是,您也可以显式地创建一个集合: db.createCollection("people")

集合不描述或不强制其文件结构; 即在集合级别没有结构上的更改。 但是,在文档级别,操作可以使用运算符将字段添加到现有文档中。 db.people.updateMany( { }, { $set: { join_date: new Date() } } )

集合不描述或不强制其文件结构; 即在集合级别没有结构上的更改。 但是,在文档级别,操作可以使用运算符将字段添加到现有文档中。 db.people.updateMany( { }, { $unset: { "join_date": "" } } )

有关更多信息,请参见。

除非通过投影明确排除,否则[方法始终在返回的文档中包含**_id字段。 下面的某些SQL查询可能包含一个_id**字段来反映这一点,即使该字段未包含在相应的查询中也是如此。

db.people.aggregate( [ { $group : { _id : "$status" } } ] ) or, for distinct value sets that do not exceed the db.people.distinct( "status" )

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

获得更多信息,请参见:.

如果您正在考虑将SQL应用程序迁移到MongoDB,请下载。

术语和概念
可执行性文件
例子
进一步阅读
Databases and Collections
Documents
Indexes
Data Modeling Concepts
db.collection.insertOne()
Insert Documents
db.collection.insertMany()
Databases and Collections
Documents
find()
find()
Query Documents
Query and Projection Operators
mongo Shell Methods
db.collection.updateMany()
$gt
$set
$inc
Update Documents
Update Operators
db.collection.updateOne()
db.collection.replaceOne()
db.collection.deleteMany()
Delete Documents
db.collection.deleteOne()
《 MongoDB应用程序现代化指南》
database
collection
document
BSON
field
index
$lookup
primary key
SQL to Aggregation Mapping Chart
$out
SQL to Aggregation Mapping Chart
$merge
SQL to Aggregation Mapping Chart
transactions
mongod
mongo
insertOne()
insertMany()
updateMany()
$set
updateMany()
$unset
db.collection.insertOne()
db.collection.updateMany()
$set
db.collection.insertMany()
db.collection.createIndex()
$unset
db.createCollection()
db.collection.drop()
BSON size limit
db.collection.find()
$ne
db.collection.distinct()
$and
db.collection.findOne()
$or
limit()
$gt
skip()
$lt
explain()
$exists
sort()
$lte
count()
$regex