Appearance
MongoDB 快速入门
MongoDB是一个开源的面向文档的NoSQL数据库,使用C++编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。
什么是MongoDB
MongoDB是一种面向文档的数据库,它将数据存储在类似JSON的文档中,这些文档具有动态的模式,这意味着你不需要提前定义数据结构。这使得MongoDB在处理不规则数据时非常灵活。
主要特性
- 面向文档的存储:数据以文档形式存储,类似于JSON对象
- 动态模式:无需提前定义表结构
- 高性能:内存映射文件和高效的查询机制
- 高可用性:通过副本集提供自动故障转移
- 水平扩展:通过分片支持数据分布
安装MongoDB
在Windows上安装
- 访问MongoDB官网下载社区版
- 运行安装程序并选择自定义安装
- 选择安装路径(默认为C:\Program Files\MongoDB\Server<version>\)
- 安装完成后,将MongoDB的bin目录添加到系统PATH环境变量
在macOS上安装
bash
# 使用Homebrew安装
brew tap mongodb/brew
brew install mongodb-community
在Linux上安装
bash
# Ubuntu/Debian
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
启动MongoDB服务
Windows
bash
# 启动MongoDB服务
net start MongoDB
macOS
bash
# 启动MongoDB服务
brew services start mongodb/brew/mongodb-community
Linux
bash
# 启动MongoDB服务
sudo systemctl start mongod
MongoDB Shell
MongoDB Shell(mongosh)是一个交互式JavaScript接口,用于连接和操作MongoDB数据库。
连接到MongoDB
bash
mongosh
基本命令
javascript
// 显示所有数据库
show dbs
// 切换到指定数据库(如果不存在则创建)
use myDatabase
// 显示当前数据库
db
// 创建并插入文档
db.users.insertOne({
name: "张三",
age: 25,
email: "zhangsan@example.com"
})
// 查询所有文档
db.users.find()
// 查询单个文档
db.users.findOne({name: "张三"})
// 更新文档
db.users.updateOne(
{ name: "张三" },
{ $set: { age: 26 } }
)
// 删除文档
db.users.deleteOne({ name: "张三" })
基本概念
文档(Document)
文档是MongoDB的基本数据单元,类似于关系数据库中的行。文档使用键值对存储数据:
json
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"name": "张三",
"age": 25,
"address": {
"street": "中山路123号",
"city": "北京",
"zipcode": "100000"
},
"hobbies": ["读书", "游泳", "编程"]
}
集合(Collection)
集合是文档的分组,类似于关系数据库中的表。集合中的文档可以有不同的字段。
数据库(Database)
数据库是集合的容器,每个MongoDB实例可以包含多个数据库。
MongoDB与关系数据库对比
| MongoDB | 关系数据库 |
|---|---|
| 数据库(Database) | 数据库(Database) |
| 集合(Collection) | 表(Table) |
| 文档(Document) | 行(Row) |
| 字段(Field) | 列(Column) |
| 嵌套文档 | 外键关系 |
连接字符串
MongoDB使用标准的连接字符串格式:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
示例:
bash
# 本地连接
mongodb://localhost:27017
# 连接指定数据库
mongodb://localhost:27017/myDatabase
# 远程连接
mongodb://username:password@remote-host:27017/myDatabase
第一个MongoDB应用
让我们创建一个简单的Node.js应用来连接MongoDB:
javascript
// 安装MongoDB驱动
npm install mongodb
// app.js
const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
async function main() {
try {
await client.connect();
console.log("成功连接到MongoDB数据库");
const db = client.db('myDatabase');
// 插入文档
const result = await db.collection('users').insertOne({
name: "李四",
age: 30,
email: "lisi@example.com"
});
console.log(`新文档的ID: ${result.insertedId}`);
// 查询文档
const user = await db.collection('users').findOne({ name: "李四" });
console.log(user);
} finally {
await client.close();
}
}
main().catch(console.error);
总结
MongoDB提供了一个灵活、可扩展的NoSQL数据库解决方案。通过本文档的学习,你应该已经掌握了MongoDB的基本概念、安装方法和基本操作。在接下来的章节中,我们将深入探讨MongoDB的高级特性和最佳实践。