这是一篇关于 MongoDB 快速上手 的常用命令与操作汇总文章。
MongoDB 快速上手:常用命令与操作汇总
MongoDB 是一款流行的 NoSQL 数据库,以其灵活的文档模型(BSON)和高性能著称。本文汇总了日常开发中最常用的命令和操作,助你快速入门。
1. 核心概念速览
在上手之前,了解 MongoDB 与传统关系型数据库(SQL)的对应关系非常重要:
* Database (数据库) $\leftrightarrow$ 数据库 (Database)
* Collection (集合) $\leftrightarrow$ 表 (Table)
* Document (文档) $\leftrightarrow$ 行 (Row)
2. 连接与基础管理
连接数据库
在终端中使用 mongosh (新版) 或 mongo (旧版) 命令连接:
bash
mongosh "mongodb://localhost:27017"
数据库管理
javascript
show dbs // 查看所有数据库
use my_database // 切换到指定数据库(如果不存在,写入数据时会自动创建)
db // 查看当前正在使用的数据库名
db.dropDatabase() // 删除当前数据库
集合 (Collection) 管理
javascript
show collections // 查看当前库下的所有集合
db.createCollection("users") // 显式创建集合(通常不需要,插入数据时会自动创建)
db.users.drop() // 删除 users 集合
3. 文档增删改查 (CRUD)
插入 (Create)
“`javascript
// 插入单条文档
db.users.insertOne({
name: “Zhang San”,
age: 25,
skills: [“JS”, “Python”]
})
// 插入多条文档
db.users.insertMany([
{ name: “Li Si”, age: 30 },
{ name: “Wang Wu”, age: 28 }
])
“`
查询 (Read)
查询是 MongoDB 最强大的功能之一。
基础查询:
javascript
db.users.find() // 查询集合内所有文档
db.users.find().pretty() // 格式化输出(让 JSON 更易读)
db.users.findOne({ name: "Zhang San" }) // 查找匹配的第一条文档
条件查询操作符:
* $eq (等于), $ne (不等于)
* $gt (>), $lt (<), $gte (>=), $lte (<=)
* $in (包含), $nin (不包含)
“`javascript
// 查询年龄大于 25 的用户
db.users.find({ age: { $gt: 25 } })
// 查询名字是 “Li Si” 或 “Wang Wu” 的用户
db.users.find({ name: { $in: [“Li Si”, “Wang Wu”] } })
“`
逻辑查询:
“`javascript
// AND 查询:同时满足年龄 < 30 且名字为 “Li Si”
db.users.find({ age: { $lt: 30 }, name: “Li Si” })
// OR 查询:满足年龄 > 30 或 技能包含 “JS”
db.users.find({
$or: [
{ age: { $gt: 30 } },
{ skills: “JS” }
]
})
“`
分页与排序:
“`javascript
// 按年龄倒序 (-1) 排列,取前 5 条
db.users.find().sort({ age: -1 }).limit(5)
// 跳过前 10 条,取 5 条(常用于分页)
db.users.find().skip(10).limit(5)
“`
更新 (Update)
使用更新操作符是关键,最常用的是 $set。
“`javascript
// 更新单条:将 name 为 “Zhang San” 的用户年龄改为 26
db.users.updateOne(
{ name: “Zhang San” }, // 查询条件
{ $set: { age: 26 } } // 更新操作
)
// 更新多条:将所有 age < 20 的用户状态设为 “student”
db.users.updateMany(
{ age: { $lt: 20 } },
{ $set: { status: “student” } }
)
// 其他常用更新符:
// $inc: 自增数值
db.users.updateOne({ name: “Zhang San” }, { $inc: { age: 1 } }) // 年龄+1
// $push: 向数组添加元素
db.users.updateOne({ name: “Zhang San” }, { $push: { skills: “Go” } })
“`
删除 (Delete)
javascript
db.users.deleteOne({ name: "Zhang San" }) // 删除匹配的第一条
db.users.deleteMany({ status: "inactive" }) // 删除所有匹配的文档
db.users.deleteMany({}) // 【危险】删除集合内所有文档
4. 实用技巧
- _id: MongoDB 默认为每个文档生成的
_id是唯一的 ObjectId,包含时间戳信息,可用于按时间粗略排序。 - countDocuments: 统计文档数量比
find().count()更准确:
db.users.countDocuments({ age: { $gt: 20 } }) - Help: 遇到命令记不清时,使用
db.help()或db.collection.help()查看帮助。