快速对比表
操作类型 | MySQL 语法 | MongoDB 语法 |
---|
创建数据库 | CREATE DATABASE shop; | use shop (隐式创建) |
创建表 | CREATE TABLE users(...); | db.createCollection("users") |
插入文档 | INSERT INTO users VALUES (...); | db.users.insertOne({name: "John"}) |
查询文档 | SELECT * FROM users; | db.users.find() |
更新文档 | UPDATE users SET age=20 WHERE id=1; | db.users.updateOne({_id:1}, {$set: {age:20}}) |
删除文档 | DELETE FROM users WHERE id=1; | db.users.deleteOne({_id:1}) |
详细操作说明
1. 插入文档
// 插入单条文档(类比 INSERT INTO)
db.users.insertOne({
name: "Alice",
age: 25,
email: "alice@example.com",
tags: ["vip", "early-adopter"]
})
// 插入多条文档
db.users.insertMany([
{name: "Bob", age: 30},
{name: "Charlie", age: 35}
])
2. 查询文档
基础查询
// 查询所有文档(SELECT * FROM users)
db.users.find()
// 条件查询(SELECT * FROM users WHERE age = 25)
db.users.find({ age: 25 })
// 比较操作符 $gt, $lt, $gte, $lte
db.users.find({ age: { $gt: 30 } }) // WHERE age > 30
指定输出字段
// 只返回name和email字段(SELECT name, email FROM users)
db.users.find({}, { name: 1, email: 1, _id: 0 })
排序
// 按age降序排序(ORDER BY age DESC)
db.users.find().sort({ age: -1 })
分页
// 跳过前10条,取5条(LIMIT 5 OFFSET 10)
db.users.find().skip(10).limit(5)
3. 更新文档
// 更新单个文档(UPDATE ... SET)
db.users.updateOne(
{ name: "Alice" },
{
$set: { age: 26 }, // 修改字段
$push: { tags: "2023" } // 数组追加元素
}
)
// 更新多个文档
db.users.updateMany(
{ age: { $lt: 30 } },
{ $set: { status: "young" } }
)
// 使用upsert(不存在时创建新文档)
db.users.updateOne(
{ name: "David" },
{ $set: { age: 40 } },
{ upsert: true }
)
4. 删除文档
// 删除单个文档
db.users.deleteOne({ name: "Charlie" })
// 删除多个文档
db.users.deleteMany({ age: { $gt: 30 } })
高级查询技巧
逻辑操作符
// AND 查询(WHERE age > 20 AND status = "active")
db.users.find({
$and: [
{ age: { $gt: 20 } },
{ status: "active" }
]
})
// OR 查询
db.users.find({
$or: [
{ age: { $lt: 18 } },
{ age: { $gt: 65 } }
]
})
正则查询
// 模糊查询(LIKE '%son%')
db.users.find({ name: /son/i }) // i表示不区分大小写
数组查询
// 查询包含特定元素的数组
db.users.find({ tags: "vip" }) // 数组包含"vip"
db.users.find({ tags: { $all: ["vip", "early-adopter"] } }) // 同时包含多个元素
术语对比表
MySQL 术语 | MongoDB 术语 |
---|
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Index | Index |
JOIN | $lookup (聚合阶段) |