⌘K 切换工具
FORMAT & CONVERT

SQL → MongoDB查询转换工具

将SQL查询转换为MongoDB查询语法。

local
sql-mongo
§01 关于此工具

概述

一个给在关系型语法和 MongoDB 语法之间来回切换的开发者用的快速转换器。它解析一条 简单的 SELECT 语句,输出等价的 db.collection.find() 调用:列清单变成投影, WHERE 变成过滤文档,ORDER BY 变成 .sort()DESC-1),LIMIT 变成 .limit()。常见场景是把既有的 SQL 报表逐条搬到 MongoDB 上, 或者反过来向习惯 SQL 的同事解释某个 find() 到底在筛什么。

使用方法

  1. SQL SELECT 区域输入或粘贴一条查询。
  2. MongoDB 输出读取转换结果,它随着你的输入更新,不需要点任何按钮。
  3. 把生成的调用直接粘进 mongo shell 或者驱动代码里使用。

示例

  • SELECT name, age FROM users WHERE age > 18 ORDER BY name LIMIT 10db.users.find({"age":{"$gt":18}}, {"name":1,"age":1}).sort({"name":1}).limit(10)
  • SELECT * FROM orders WHERE status = 'paid'db.orders.find({"status":"paid"})

说明

它只处理基本的查询形态——这是一个语法辅助工具,不是完整的 SQL 解析器。多个 WHERE 条件按 AND 语义合并(也就是 MongoDB 的隐式合取);字符串值可以用单引号或双引号, 未加引号的值会被当作数字。如果输出看起来不对,先确认语句是否落在支持的形态之内: 一旦出现 JOIN、GROUP BY 或 OR,结果就不能指望。在依赖转换结果之前, 请先对着你的数据验证一遍。

把它当成一份翻译初稿:形态对上之后,索引、类型和空值语义这些差异仍然要自己判断。

FAQ
我的查询会被发送到服务器吗?
不会。SQL 的解析和转换完全在浏览器内进行,不做任何传输,因此引用了真实表名或字段名的查询也不会外泄。
支持哪些 SQL 语句?
只支持单条形如 SELECT ... FROM ... [WHERE] [ORDER BY] [LIMIT] 的 SELECT。WHERE 条件之间必须用 AND 连接;OR、JOIN、GROUP BY、子查询、IN 和 LIKE 都不支持。
比较运算符是怎么转换的?
相等会变成直接的值匹配;>、<、>=、<= 和 !=(或 <>)分别映射为 $gt、$lt、$gte、$lte 和 $ne。