SQL到MongoDB查詢轉換器
將 SQL 查詢(SELECT、INSERT、UPDATE、DELETE)轉換為 MongoDB shell 語法,提供逐句對應、聚合管道生成、即時語法高亮,以及可直接貼上的 mongosh 輸出。
偵測到廣告封鎖,導致我們無法顯示廣告
MiniWebtool 依靠廣告收入免費提供服務。如果這個工具幫到你,歡迎升級 Premium(無廣告 + 更快),或將 MiniWebtool.com 加入允許清單後重新整理頁面。
- 或升級 Premium(無廣告)
- 允許 MiniWebtool.com 顯示廣告,然後重新載入
SQL到MongoDB查詢轉換器
歡迎使用 SQL到MongoDB查詢轉換器,這是一個在線工具,可以將 SQL 查詢(SELECT、INSERT、UPDATE 和 DELETE)翻譯成簡潔、可直接貼上的 MongoDB shell 語法。每次轉換都附帶 子句對子句映射,精確顯示每個 SQL 關鍵字如何變為其對應的 MongoDB 語法,使此工具既是轉換器,也是開發人員從關聯式資料庫遷移到 MongoDB 的學習輔助工具。
為什麼要使用這個 SQL到MongoDB查詢轉換器?
大多數在線轉換器只是簡單地給出一個 JSON 區塊,讓你猜測發生了什麼。這個工具不同:你可以看到生成的 MongoDB 查詢 以及 逐步映射,解釋為什麼每個子句會按那樣的方式轉換。這使得它在遷移期間進行快速翻譯,以及透過現有的 SQL 知識學習 MongoDB 查詢語言時同樣有用。
主要功能
- 四種語句類型: SELECT (find, distinct, countDocuments, aggregate), INSERT, UPDATE, DELETE —— 全部整合在一個工具中。
- 子句對子句映射: 查看 FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET 如何各自轉化為 MongoDB 運算子。
- 自動聚合管道: GROUP BY, HAVING 和聚合函數會生成正確的 aggregate([...]) 管道,並按正確順序排列 $match, $group, $sort, $limit 階段。
- 豐富的 WHERE 支持: 支持 AND, OR, NOT, 括號, IN, NOT IN, BETWEEN, LIKE, IS NULL, IS NOT NULL,以及所有六種比較運算子。
- 語法高亮輸出: 易於閱讀,可直接貼入 mongosh, MongoDB Compass 或 Studio 3T。
- 運算子速查表: 始終可見的參考卡,包含 24 個常見的 SQL ↔ MongoDB 映射。
- 快速加載示例: 九個真實場景示例,一鍵即可加載。
- 複製與下載: 一鍵複製到剪貼簿或保存為 .js 文件。
- 行動端適配: 版面自動適配手機和平板 —— 在窄螢幕上映射面板會垂直堆疊。
這個轉換器可以將哪些 SQL 語句翻譯成 MongoDB?
此工具可轉換 SELECT, INSERT, UPDATE 和 DELETE 語句。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 等效項對齊。例如:
MongoDB: db.users.find({ age: { $gt: 21 } }, { name: 1, age: 1, _id: 0 }).sort({ age: -1 }).limit(10)
映射:
· FROM users → db.users
· SELECT name, age → projection { name: 1, age: 1, _id: 0 }
· WHERE age > 21 → filter { 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 中,先執行 $sort 再執行 $match 會慢得多 —— 因此工具始終以最佳順序發出各階段。
轉換為:
db.books.aggregate([
{ $match: { year: { $gte: 2020 } } },
{ $group: { _id: "$category", total: { $sum: 1 } } },
{ $match: { total: { $gt: 5 } } },
{ $sort: { total: -1 } },
{ $limit: 5 }
])
SQL LIKE 模式是如何轉換的?
SQL 的 % 通配符在 MongoDB 正則表達式中變為 .*,而 _ 通配符變為 .。當 SQL 模式不以 % 開頭或結尾時,模式會加上 ^ 或 $ 錨點。模式中的正則表達式特殊字元會自動轉義。
- LIKE 'abc%' → /^abc.*/
- LIKE '%.com' → /.*\.com$/
- LIKE '%widget%' → /.*widget.*/
- LIKE 'a_c' → /^a.c$/
SQL 和 MongoDB 查詢之間的主要區別是什麼?
SQL 是聲明性的且以資料表為中心 —— 你描述行和列。MongoDB 是以文件為中心,並使用類似 JSON 的查詢語言。主要的翻譯規則:
- 資料表 → 集合 (collections)。 FROM users 變為 db.users。
- 行 → 文件 (documents)。 帶有 name, age, email 列的 SQL 行變為具有這些欄位名稱的 MongoDB 文件。
- WHERE → 篩選物件。 MongoDB find() 的第一個參數是篩選文件,使用 $gt, $in, $and 等運算子。
- SELECT 列表 → 投影 (projection)。 find() 的第二個參數指定要包含 (1) 或排除 (0) 的欄位。_id 欄位預設會包含,除非你將其設置為 0。
- ORDER BY → .sort(), LIMIT → .limit(), OFFSET → .skip()。 這些變為 find() 後的鏈式方法調用。
- GROUP BY → $group。 將多行縮減為一行的聚合在聚合管道內運行。
- JOIN → $lookup。 SQL join 映射到聚合中的 $lookup 階段。(此工具目前專注於單表查詢;檢測到 join 時會顯示建議。)
生成的 MongoDB 查詢可以直接貼入 mongosh 嗎?
是的。輸出使用 mongosh (MongoDB Shell) 語法,包括不帶引號的物件鍵、尾隨的鏈式方法如 .sort(), .limit() 和 .skip(),以及原生 JavaScript 正則表達式字面量。你可以直接將其貼入 mongosh、MongoDB Compass 的 MongoSH 選項卡或 Studio 3T 的 IntelliShell。
如何使用這個工具
- 貼上你的 SQL 查詢 到輸入框中,或點擊快速示例加載樣本查詢。
- 點擊轉換為 MongoDB。 工具會解析你的 SQL 並構建等效的 MongoDB 查詢。
- 查看子句對子句映射 以驗證翻譯並學習映射規則。
- 複製或下載 MongoDB 查詢,使用代碼塊上方的按鈕。下載的文件是即用型 .js 腳本。
實際使用場景
對於遷移到 MongoDB 的開發人員
- 將舊版 SQL 報告移植到 MongoDB 聚合管道。
- 翻譯來自文檔、Stack Overflow 答案或架構設計指南的 SQL 查詢。
- 生成基準 MongoDB 查詢,然後你可以使用索引和投影進行優化。
對於學生和學習者
- 理解兩種根本不同的查詢語言之間的映射。
- 從你已經熟悉的 SQL 開始,建立對 MongoDB 文件模型的直覺。
- 在從頭編寫 MongoDB 查詢時,將運算子速查表用作快速參考。
對於 DBA 和後端工程師
- 在審查 PR 時快速檢查候選 MongoDB 查詢。
- 在對生產數據運行之前,在架構遷移期間對查詢進行原型設計。
- 將子句映射作為教學材料與初級團隊成員分享。
限制及目前尚未支持的內容
- JOIN —— MongoDB 的 JOIN 等效項需要 $lookup 階段與外鍵設計決策,靜態轉換器並不總能推斷出來。目前請轉換單表查詢並在需要時手動包裝在 $lookup 中。
- 子查詢 —— 不解析純量(scalar)和相關子查詢。請嘗試將其分解為兩個獨立的查詢。
- CTE / WITH 子句 —— 不支持;請先將 CTE 提取為獨立查詢。
- UNION / UNION ALL —— 請手動使用 $unionWith。
- 視窗函數 —— 在 MongoDB 5.0+ 中使用 $setWindowFields。
- 複雜的 SET 表達式 —— UPDATE 的值必須是字面量;像 SET x = x + 1 這樣的算術運算需要 MongoDB 的 $inc 運算子,需手動添加。
常見問題
為什麼我的 SELECT 查詢沒有 WHERE 卻仍然返回一個篩選物件?
MongoDB 的 find() 期望第一個參數作為篩選器。當 SQL 沒有 WHERE 子句時,工具會發出 find({}) —— 一個匹配所有文件的空篩選器。
為什麼我的投影中添加了 _id: 0?
MongoDB 在查詢結果中預設包含 _id 欄位。為了符合 SQL SELECT 僅返回所列列的行為,工具會追加 _id: 0,除非你明確將 _id 列在查詢中。
我的 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-tw/sql到mongodb查詢轉換器/,來自 MiniWebtool,https://MiniWebtool.com/
由 miniwebtool 團隊提供。最後更新:2026年4月25日
其他相關工具:
其他文字工具:
- 相同字母異序詞生成器
- 仿生閱讀轉換器 新
- 比較兩個字串
- 找最長一行工具
- AI 語言偵測器 精選
- 文本行處理器
- XML驗證器 精選
- 文本轉語音閱讀器 新
- 文本列提取器 新
- JSON轉YAML轉換器 新
- 正規表達式測試器 新
- 文字差異比對工具 新
- CSV轉JSON轉換器 新
- 圖片Base64轉換器 新
- API測試工具 新
- ASCII碼表 新
- Webhook測試器 新
- AI部落格標題產生器 新
- AI 話題標籤產生器 新
- AI標語產生器 新
- AI文章大綱生成器 新
- 線上記事本 新
- TOML 轉 JSON 轉換器 新
- JSON 轉 CSV 轉換器 新
- XML轉JSON轉換器 新
- SQL到MongoDB查詢轉換器 新