首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MongoDB 與 MySQL 命令對照表:從關係型思維遷移到文檔型

     編輯:MySQL 綜合教學

MongoDB 與 MySQL 命令對照表:從關係型思維遷移到文檔型

MongoDB(文檔型)與 MySQL(關係型)在概念模型與命令語法上存在系統性差異。本文提供核心命令對照表與語法遷移指南,助力技術棧切換。

核心概念映射

MySQLMongoDB說明
DatabaseDatabase頂層命名空間一致
TableCollection無 Schema 約束,無行列概念
Row/RecordDocumentJSON/BSON 文檔,動態結構
ColumnField字段名對應
IndexIndex機制相似,語法不同
Primary Key_idMongoDB 自動生成 ObjectId
Join$lookup / 應用層組裝MongoDB 4.0+ 支持 $lookup,但推薦反範式設計

核心工具與服務命令對照

MySQLMongoDB功能
mysqldmongod服務端進程
mysqlmongo客戶端 Shell
mysqldumpmongodump邏輯備份
mysql < filemongorestore邏輯恢復
mysqlimportmongoimport數據導入
SELECT ... INTO OUTFILEmongoexport數據導出

DDL/DML 命令對照(重點)

操作MySQLMongoDB
顯示庫SHOW DATABASES;SHOW DBS;
顯示表/集合SHOW TABLES;SHOW COLLECTIONS;
創建表/集合CREATE TABLE t (a INT, b INT);db.createCollection("coll", {capped:true, size:100000}); 隱式創建
創建索引CREATE INDEX idx ON t(a);db.coll.ensureIndex({a:1}); -- 1升序 -1降序
複合索引CREATE INDEX idx ON t(a,b DESC);db.coll.ensureIndex({a:1, b:-1});
插入INSERT INTO t VALUES(1,1);db.coll.insert({a:1, b:1});
全量查詢SELECT * FROM t;db.coll.find();
投影查詢SELECT a,b FROM t;db.coll.find({}, {a:1, b:1});
等值查詢SELECT * FROM t WHERE age=33;db.coll.find({age:33});
範圍查詢WHERE age>33 AND age<=40db.coll.find({age:{$gt:33, $lte:40}});
多條件 ANDWHERE a=1 AND b='q'db.coll.find({a:1, b:'q'});
多條件 ORWHERE a=1 OR b=2db.coll.find({$or:[{a:1},{b:2}]});
模糊查詢LIKE '%Joe%'db.coll.find({name:/Joe/}); -- 正則
前綴查詢LIKE 'Joe%'db.coll.find({name:/^Joe/});
計數SELECT COUNT(1) FROM t;db.coll.count();
條件計數WHERE age>30db.coll.find({age:{$gt:30}}).count();
去重SELECT DISTINCT col FROM t;db.coll.distinct('col');
排序ORDER BY name DESCdb.coll.find().sort({name:-1});
分頁LIMIT 10 OFFSET 20db.coll.find().skip(20).limit(10);
執行計劃EXPLAIN SELECT ...db.coll.find({...}).explain();
更新UPDATE t SET a=1 WHERE b='q'db.coll.update({b:'q'}, {$set:{a:1}}, false, true);
增量更新UPDATE t SET a=a+2 WHERE b='q'db.coll.update({b:'q'}, {$inc:{a:2}}, false, true);
刪除DELETE FROM t WHERE z='abc'db.coll.remove({z:'abc'});
清空集合TRUNCATE TABLE t;db.coll.remove({});
刪除庫DROP DATABASE db;use db; db.dropDatabase();
刪除表/集合DROP TABLE t;db.coll.drop();

MongoDB 進階查詢操作符速查

  • 比較:$gt, $gte, $lt, $lte, $ne, $in, $nin
  • 邏輯:$and, $or, $not, $nor
  • 元素:$exists, $type(BSON 類型碼)
  • 正則:/pattern/flags(如 /acme.*corp/i)
  • 數組:$all, $size, $elemMatch
  • 取模:$mod: [10, 1](a % 10 == 1)
  • 內嵌文檔:"author.name": "joe"

聚合管道(對標 SQL GROUP BY/HAVING/JOIN)

db.coll.aggregate([
  {$match: {status: 'A'}},           -- WHERE
  {$group: {_id: '$cust_id', total: {$sum: '$amount'}}},  -- GROUP BY + SUM
  {$sort: {total: -1}},              -- ORDER BY
  {$limit: 5}                         -- LIMIT
]);

遷移核心心法

  1. 去範式化:將關聯數據內嵌或冗余存儲,換空間換查詢性能(無 Join 開銷)。
  2. 動態 Schema:同一集合文檔結構可異,應用層負責兼容。
  3. 無事務(舊版):MongoDB 4.0+ 支持多文檔 ACID 事務,但性能成本高,設計時優先單文檔原子性。
  4. 索引策略:ESR 原則(Equality → Sort → Range),複合索引順序至關重要。

命令對照是入門捷徑,思維轉型才是遷移核心。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved