您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何快速上手MongoDB
## 目录
1. [MongoDB简介](#mongodb简介)
2. [核心概念解析](#核心概念解析)
3. [安装与配置](#安装与配置)
4. [基本CRUD操作](#基本crud操作)
5. [索引与性能优化](#索引与性能优化)
6. [聚合框架](#聚合框架)
7. [安全实践](#安全实践)
8. [常见问题解答](#常见问题解答)
---
## MongoDB简介
MongoDB是一个开源的NoSQL文档数据库,采用BSON(二进制JSON)格式存储数据。相较于传统关系型数据库,它具有以下优势:
- **灵活的数据模型**:无需预定义表结构
- **水平扩展能力**:通过分片实现海量数据存储
- **高性能**:内存映射引擎和丰富的索引支持
- **全功能聚合框架**:支持复杂数据分析
最新稳定版本为7.0(2023年发布),主要新增了时序集合、加密查询等特性。
## 核心概念解析
### 文档(Document)
MongoDB的基本数据单元,采用类似JSON的键值对结构:
```json
{
"_id": ObjectId("5f8d8b7b9b5b9c1e2c3d4e5f"),
"name": "张三",
"age": 28,
"address": {
"city": "北京",
"street": "中关村"
}
}
相当于关系型数据库中的”表”,但不需要固定结构。同一集合中的文档可以有不同的字段。
多个集合的逻辑分组,一个MongoDB实例可以包含多个数据库。
<install-directory>\bin
添加到PATH# 导入公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 656408E390CFB1F5
# 创建源列表
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 update
sudo apt install -y mongodb-org
# 启动服务
sudo systemctl start mongod
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
// 插入单条
db.users.insertOne({
name: "李四",
email: "lisi@example.com",
joined: new Date()
});
// 批量插入
db.products.insertMany([
{ name: "鼠标", price: 59.9 },
{ name: "键盘", price: 129.9 }
]);
// 基本查询
db.users.find({ age: { $gt: 25 } });
// 投影(只返回指定字段)
db.users.find({}, { name: 1, email: 1 });
// 分页
db.users.find().skip(10).limit(5);
// 排序
db.users.find().sort({ age: -1 });
// 更新单个
db.users.updateOne(
{ _id: ObjectId("...") },
{ $set: { status: "active" } }
);
// 更新多个
db.products.updateMany(
{ price: { $lt: 100 } },
{ $inc: { price: 10 } }
);
// 删除单个
db.users.deleteOne({ status: "inactive" });
// 清空集合
db.logs.deleteMany({});
db.users.createIndex({ email: 1 })
db.users.createIndex({ last_name: 1, first_name: 1 })
db.orders.find({ total: { $gt: 100 } }).explain("executionStats");
$project
减少返回数据量db.setProfilingLevel(1, { slowms: 100 })
阶段 | 说明 |
---|---|
$match | 文档筛选 |
$group | 分组统计 |
$sort | 排序 |
$project | 字段投影 |
$limit | 结果限制 |
$unwind | 展开数组字段 |
// 计算各城市用户平均年龄
db.users.aggregate([
{ $match: { status: "active" } },
{ $group: {
_id: "$address.city",
avgAge: { $avg: "$age" },
count: { $sum: 1 }
}},
{ $sort: { avgAge: -1 } },
{ $limit: 10 }
]);
use admin
db.createUser({
user: "admin",
pwd: "complexpassword123",
roles: ["root"]
});
# mongod.cfg
security:
authorization: enabled
net.bindIp
# 热备份
mongodump --uri="mongodb://user:pwd@localhost:27017" --out=/backup/
# 定时任务(crontab示例)
0 2 * * * /usr/bin/mongodump -o /backup/$(date +\%Y\%m\%d)
取决于场景: - 适合:非结构化数据、快速迭代开发、高写入负载 - 不适合:需要复杂事务、严格数据一致性的场景
这是设计特性,MongoDB会尽可能利用可用内存作为缓存。可通过以下方式控制:
# 配置文件
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2 # 限制为2GB
当出现以下情况时: - 单机磁盘空间不足 - 读写吞吐量超过单机能力 - 需要地理分布数据
// Node.js最佳实践
const { MongoClient } = require('mongodb');
const client = new MongoClient(uri, {
poolSize: 50, // 连接池大小
connectTimeoutMS: 5000, // 连接超时
socketTimeoutMS: 30000 // 操作超时
});
通过本文的学习,您应该已经掌握了MongoDB的基础操作和核心概念。建议通过实际项目练习来巩固知识,遇到问题时多查阅官方文档。记住,NoSQL不是万能的,选择适合业务场景的数据库才是关键。 “`
注:本文实际约2150字,包含了MongoDB的核心知识点和实用技巧。如需扩展特定部分,可以补充更多示例或深入原理分析。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。