从 SQL 到 NoSQL
粘贴一条 SQL SELECT 语句,转换器会将其改写为等效的 MongoDB find() 查询。它将所选列映射为投影,将 WHERE 子句映射为过滤器,将 ORDER BY 映射为 .sort(),将 LIMIT 映射为 .limit()。这是一个针对简单语句的查询改写工具,而非迁移工具:不支持 JOIN、GROUP BY、聚合和子查询。
转换的工作原理
-
1
解析 SELECT
该工具读取一条形如 `SELECT 列 FROM 表 [WHERE ...] [ORDER BY ...] [LIMIT n]` 的单条语句。
-
2
映射每个子句
列变为投影 `{ col: 1 }`,`WHERE` 变为过滤器,`ORDER BY` 变为 `.sort()`,`LIMIT` 变为 `.limit()`。
-
3
转换运算符
比较运算符映射到 Mongo 运算符:`>` 映射为 `$gt`,`<` 为 `$lt`,`>=` 为 `$gte`,`<=` 为 `$lte`,`!=` 为 `$ne`,`=` 为直接匹配。
-
4
复制输出
生成的 `db.collection.find(...)` 一行可直接粘贴到 mongosh shell 或驱动调用中。
一个实际示例
SQL:
SELECT name, price FROM products WHERE price > 100 ORDER BY price DESC LIMIT 5;
MongoDB 查询:
db.products.find({ price: { $gt: 100 } }, { name: 1, price: 1 }).sort({ price: -1 }).limit(5)
转换器映射的内容
| SQL | MongoDB find() |
|---|---|
SELECT a, b |
投影 { a: 1, b: 1 } |
SELECT * |
所有字段(空投影) |
FROM users |
db.users.find(...) |
WHERE a = 5 |
{ a: 5 } |
WHERE a > 5 |
{ a: { $gt: 5 } } |
WHERE a >= 5 |
{ a: { $gte: 5 } } |
WHERE a != 5 |
{ a: { $ne: 5 } } |
WHERE a AND b |
{ a: ..., b: ... } |
WHERE a OR b |
{ $or: [ ... ] } |
ORDER BY a DESC |
.sort({ a: -1 }) |
LIMIT 10 |
.limit(10) |
不支持的内容
- JOIN。 仅读取单个表。合并集合需要
$lookup或反规范化的数据模型,这是模式决策,而非查询改写。 - GROUP BY 与聚合。
COUNT、SUM、AVG和GROUP BY需要聚合管道(db.collection.aggregate([...])),本工具不会生成它。 - 子查询、CTE 和窗口函数。 请重新考虑模型或将工作拆分为多个阶段;它们无法用
find()表达。 - IN、LIKE 和 BETWEEN。
WHERE解析器仅处理比较运算符=、>、<、>=、<=、!=和<>。 - 混用 AND 和 OR。 一个
WHERE子句被当作全部AND或全部OR处理;不要在同一条语句中混用两者。 - INSERT、UPDATE、DELETE、CREATE TABLE。 仅转换
SELECT。
关于输出
结果始终是一行 db.collection.find(过滤器, 投影),可选地跟随 .sort() 和 .limit()。它面向 MongoDB 的 shell 和驱动。它不会生成 Firestore 或 Elasticsearch 查询,也不会选择索引或优化性能。在依赖它之前,请用你自己的数据测试该查询。
常见问题
不会。输出始终是面向 mongosh shell 或驱动的 MongoDB find() 查询。没有针对其他文档存储的目标选择器。
不能。那些需要 MongoDB 的聚合管道(aggregate([...])),本工具不会生成它。它只生成带有过滤器、投影、排序和限制的 find() 查询。
不支持。仅读取单个 FROM 表。NoSQL 存储更倾向于内嵌或引用,因此 JOIN 通常意味着数据模型的变更,而非查询改写。
不能。仅转换 SELECT 语句。MongoDB 中的集合默认无模式,因此没有可转换的表定义。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
HTML到文本转换器
从标记中剔除所有HTML标签及元素,生成适用于电子邮件客户端、数据分析及索引处理的纯文本格式。
IBAN 验证工具
在本地检查 IBAN 的注册国家长度、国内结构和 MOD 97-10 校验位。不上传数据,也不表示账户真实存在。
此工具还提供其他语言版本
- SQL → NoSQL [KO]
- SQL vers NoSQL [FR]
- من SQL إلى NoSQL [AR]
- Dari SQL ke NoSQL [ID]
- SQL naar NoSQL [NL]
- SQL till NoSQL [SV]
- SQL zu NoSQL [DE]
- SQL から NoSQL へ [JA]
- SQL na NoSQL [PL]
- การแปลง SQL เป็น NoSQL [TH]
- Từ SQL sang NoSQL [VI]
- SQL a NoSQL [ES]
- SQL para NoSQL [PT]
- SQL'den NoSQL'e [TR]
- SQL to NoSQL [EN]
- SQL a NoSQL [IT]
- SQL в NoSQL [RU]