什么是 MongoDB?
MongoDB 是一个开源的 NoSQL 数据库,使用文档存储数据。与传统的关系型数据库不同,MongoDB 使用 BSON(类似 JSON 的二进制格式)来存储数据,这使得它在处理大规模数据时具有更高的灵活性和可扩展性。
MongoDB 的特点
- 文档导向:数据以文档的形式存储,支持复杂的数据结构。
- 灵活的模式:不需要预定义模式,可以随时添加字段。
- 高性能:支持高并发读写操作。
- 水平扩展:可以通过分片来扩展数据库。
安装 MongoDB
1. 下载 MongoDB
访问 MongoDB 官方网站 下载适合你操作系统的 MongoDB Community Server。
2. 安装 MongoDB
根据你的操作系统,按照以下步骤进行安装:
- Windows:
-
- 下载并运行安装程序。
- 按照提示完成安装。
- macOS:
使用 Homebrew 安装:
brew tap mongodb/brew
brew install mongodb-community
- Linux:
以 Ubuntu 为例:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/multiverse amd64 mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update
sudo apt install -y mongodb-org
3. 启动 MongoDB
- Windows:
在命令提示符中运行:
"C:\Program Files\MongoDB\Server\4.4\bin\mongod.exe"
- macOS/Linux:
在终端中运行:
brew services start mongodb/brew/mongodb-community
使用 MongoDB
1. 连接到 MongoDB
打开一个新的终端窗口,输入以下命令以连接到 MongoDB shell:
mongo
2. 创建数据库
在 MongoDB 中,数据库是在使用时创建的。使用以下命令创建一个名为 mydatabase
的数据库:
use mydatabase
3. 创建集合
集合是 MongoDB 中的文档组,相当于关系型数据库中的表。创建一个名为 users
的集合:
db.createCollection("users")
4. 插入文档
向集合中插入文档(类似于关系型数据库中的行):
db.users.insertOne({
name: "Alice",
age: 25,
email: "alice@example.com"
})
db.users.insertMany([
{ name: "Bob", age: 30, email: "bob@example.com" },
{ name: "Charlie", age: 35, email: "charlie@example.com" }
])
5. 查询文档
使用 find()
方法查询集合中的文档:
// 查询所有文档
db.users.find()
// 查询特定条件的文档
db.users.find({ age: { $gt: 28 } }) // 查询年龄大于 28 的用户
6. 更新文档
使用 updateOne()
或 updateMany()
方法更新文档:
// 更新单个文档
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 26 } }
)
// 更新多个文档
db.users.updateMany(
{ age: { $lt: 30 } },
{ $set: { status: "young" } }
)
7. 删除文档
使用 deleteOne()
或 deleteMany()
方法删除文档:
// 删除单个文档
db.users.deleteOne({ name: "Bob" })
// 删除多个文档
db.users.deleteMany({ age: { $lt: 30 } })
总结
MongoDB 是一个强大的 NoSQL 数据库,适合处理大规模和复杂的数据。通过本文的介绍,你应该能够快速上手 MongoDB,进行基本的数据库操作。随着你对 MongoDB 的深入了解,你可以探索更多高级功能,如索引、聚合和分片等。
希望这篇博客能帮助你入门 MongoDB!如果你有任何问题或想了解更多,请随时留言。