自 2010 年 · 每月支持超过 200 万次工具运行
自 2010 年
添加到 Chrome

我的工具箱

自动模式

还没有收藏的工具。

升级为高级版
相关工具
AI SQL 查询生成器文本转SQL列表转换器SQL格式化工具SCSS转CSS编译器
主页 > 文本工具 > 其他文字工具
 

SQL到MongoDB查询转换器

将 SQL 查询(SELECT、INSERT、UPDATE、DELETE)转换为 MongoDB shell 语法,支持逐句映射、聚合管道生成、实时语法高亮以及可直接粘贴的 mongosh 输出。

免费使用无需注册即时出结果
SQL到MongoDB查询转换器立即免费试用 ▼
SQL MongoDB
⚡ 快速示例(点击加载)

Embed SQL到MongoDB查询转换器 Widget

SQL到MongoDB查询转换器

欢迎使用 sql到mongodb查询转换器,这是一个在线工具,可将 SQL 查询(SELECT、INSERT、UPDATE 和 DELETE)转换为简洁、可直接粘贴的 MongoDB shell 语法。每次转换都配有逐句映射,展示了每个 SQL 关键字如何变为对应的 MongoDB 等效项,使此工具既是一个转换器,也是开发人员从关系型数据库迁移到 MongoDB 的学习助手。

为什么要使用此 sql到mongodb查询转换器?

大多数在线转换器只是简单地给出一个 JSON 数据块,让你去猜测发生了什么。这个工具不同:你会看到生成的 MongoDB 查询以及一个逐步映射,解释了为什么每个子句会以这种方式转换。这使得它在迁移过程中的快速转换以及从现有的 SQL 知识学习 MongoDB 查询语言方面都同样有用。

主要特点

此转换器可以将哪些 SQL 语句转换为 MongoDB?

该工具可转换 SELECT, INSERT, UPDATEDELETE 语句。SELECT 支持 WHERE、ORDER BY、GROUP BY、HAVING、LIMIT、OFFSET、DISTINCT 以及五种标准聚合函数:COUNT、SUM、AVG、MIN 和 MAX。带有 AND、OR、NOT、IN、NOT IN、BETWEEN、LIKE、IS NULL 和 IS NOT NULL 的复杂 WHERE 子句都能清晰地映射到 MongoDB 操作符。

逐句映射是如何工作的?

每次转换后,工具会显示一个表格,将每个 SQL 子句与其 MongoDB 等效项对齐。例如:

SQL: SELECT name, age FROM users WHERE age > 21 ORDER BY age DESC LIMIT 10
MongoDB: db.users.find({ age: { $gt: 21 } }, { name: 1, age: 1, _id: 0 }).sort({ age: -1 }).limit(10)
映射:
· FROM usersdb.users
· SELECT name, age → 投影 { name: 1, age: 1, _id: 0 }
· WHERE age > 21 → 过滤器 { age: { $gt: 21 } }
· ORDER BY age DESC.sort({ age: -1 })
· LIMIT 10.limit(10)

它能处理 GROUP BY 查询的聚合管道吗?

是的。当 SQL 使用 GROUP BY、HAVING 或聚合函数时,转换器会生成一个完整的 MongoDB 聚合管道:分组前的 $match(来自 WHERE)、带有 _id 和累加器的 $group、分组后的 $match(来自 HAVING),然后按管道顺序执行 $sort, $skip$limit。顺序非常重要 —— 在 MongoDB 中,在 $match 之前执行 $sort 会慢得多 —— 因此工具始终按最优顺序输出阶段。

示例: SELECT category, COUNT(*) AS total FROM books WHERE year >= 2020 GROUP BY category HAVING COUNT(*) > 5 ORDER BY total DESC LIMIT 5

变为:
db.books.aggregate([
  { $match: { year: { $gte: 2020 } } },
  { $group: { _id: "$category", total: { $sum: 1 } } },
  { $match: { total: { $gt: 5 } } },
  { $sort: { total: -1 } },
  { $limit: 5 }
])

SQL LIKE 模式是如何转换的?

在 MongoDB 正则表达式中,SQL % 通配符变为 .*_ 通配符变为 .。当 SQL 模式不以 % 开头或结尾时,模式会用 ^$ 锚定。模式内部的特殊正则字符会自动转义。

SQL 和 MongoDB 查询之间的主要区别是什么?

SQL 是声明性的且以表为导向的 —— 你描述行和列。MongoDB 是以文档为导向的,使用类似 JSON 的查询语言。主要的转换规则:

生成的 MongoDB 查询可以直接粘贴到 mongosh 中吗?

是的。输出使用 mongosh(MongoDB Shell)语法,包括不带引号的对象键、尾部链式方法(如 .sort().limit().skip())以及原生 JavaScript 正则表达式字面量。你可以直接将其粘贴到 mongosh、MongoDB Compass 的 MongoSH 选项卡或 Studio 3T 的 IntelliShell 中。

如何使用此工具

  1. 粘贴您的 SQL 查询到输入框中,或点击快速示例加载示例查询。
  2. 点击转换为 MongoDB。 工具会解析您的 SQL 并构建等效的 MongoDB 查询。
  3. 查看逐句映射以验证转换并学习映射规则。
  4. 复制或下载 MongoDB 查询,使用代码块上方的按钮。下载的文件是一个可以直接运行的 .js 脚本。

实际使用场景

对于迁移到 MongoDB 的开发人员

对于学生和学习者

对于 DBA 和后端工程师

局限性及尚不支持的内容

常见问题解答

为什么我不带 WHERE 的 SELECT 查询仍然返回一个过滤器对象?

MongoDB 的 find() 要求第一个参数为过滤器。当 SQL 没有 WHERE 子句时,工具会发出 find({}) —— 一个匹配所有文档的空过滤器。

为什么我的投影中添加了 _id: 0?

MongoDB 默认在查询结果中包含 _id 字段。为了匹配 SQL 仅返回所列列的 SELECT 行为,除非你显式将 _id 列出,否则工具会附加 _id: 0

我的 UPDATE 查询应该使用 updateOne 还是 updateMany?

工具默认发出 updateMany,这符合 SQL UPDATE 的多行语义。当你确定过滤器匹配单个文档时(例如,通过唯一的 _id 过滤),请切换到 updateOne

该工具会存储或发送我的 SQL 到任何地方吗?

您的 SQL 被提交到我们的服务器进行解析,作为转换后的 MongoDB 返回,然后被丢弃。它不会被记录、存储或与任何第三方共享。

这个工具免费吗?

是的,它完全免费,无需账户即可使用。随时刷新页面即可重新开始。

如何处理 MongoDB 的原生类型,如 ObjectId 和 Date?

SQL 字符串字面量默认变为 MongoDB 字符串。如果你的列存储的是 ObjectId,请手动将字面量包装在 ObjectId("...") 中。对于日期字段,请将字面量包装在 ISODate("...") 中。粘贴后,这两项替换操作只需一秒钟即可完成。

其他资源

引用此内容、页面或工具为:

"SQL到MongoDB查询转换器" 于 https://MiniWebtool.com/zh-cn/sql到mongodb查询转换器/,来自 MiniWebtool,https://MiniWebtool.com/

由 miniwebtool 团队开发。更新日期:2026年4月25日

其他文字工具:

热门与最新工具:

查询字符串生成器AI正则表达式生成器JSON转YAML转换器查看全部 →
主页 > 文本工具 > 其他文字工具 > SQL到MongoDB查询转换器