mongodb作业
发布人:shili8
发布时间:2025-01-12 20:36
阅读次数:0
**MongoDB 作业**
### 一、 MongoDB 基础知识####1. MongoDB 简介MongoDB 是一个开源的 NoSQL 数据库管理系统,基于 BSON(Binary Serialized Object Notation)数据格式。它支持文档式存储,并且可以水平扩展。
####2. MongoDB 特点* 支持文档式存储* 支持集合式存储* 支持分片和复制* 支持事务### 二、 MongoDB 数据模型####1. 文档(Document)
MongoDB 中的基本数据单元是文档,一个文档可以看作是一个 JSON 对象。
json{
"_id" : ObjectId("..."),
"name" : "John",
"age" :30,
"address" : {
"street" : "123 Main St",
"city" : "Anytown",
"state" : "CA"
}
}
####2. 集合(Collection)
MongoDB 中的集合可以看作是一个表,一个集合中可以存储多个文档。
javascriptdb.createCollection("users");
### 三、 MongoDB CRUD 操作####1. 插入数据(Insert)
插入数据到指定集合中,可以使用 `insertOne()` 或 `insertMany()` 方法。
javascript// 插入一个文档db.users.insertOne({
"name" : "John",
"age" :30,
"address" : {
"street" : "123 Main St",
"city" : "Anytown",
"state" : "CA"
}
});
// 插入多个文档db.users.insertMany([
{
"name" : "John",
"age" :30,
"address" : {
"street" : "123 Main St",
"city" : "Anytown",
"state" : "CA"
}
},
{
"name" : "Jane",
"age" :25,
"address" : {
"street" : "456 Elm St",
"city" : "Othertown",
"state" : "NY"
}
}
]);
####2. 查询数据(Find)
查询集合中的文档,可以使用 `find()` 方法。
javascript// 查询所有文档db.users.find();
// 查询满足条件的文档db.users.find({
"age" : {
"$gt" :25 }
});
####3. 更新数据(Update)
更新集合中的文档,可以使用 `updateOne()` 或 `updateMany()` 方法。
javascript// 更新一个文档db.users.updateOne({
"_id" : ObjectId("..."),
}, {
$set: {
"name" : "John Doe"
}
});
// 更新多个文档db.users.updateMany({
"age" : {
"$gt" :25 }
}, {
$set: {
"status" : "active"
}
});
####4. 删除数据(Delete)
删除集合中的文档,可以使用 `deleteOne()` 或 `deleteMany()` 方法。
javascript// 删除一个文档db.users.deleteOne({
"_id" : ObjectId("..."),
});
// 删除多个文档db.users.deleteMany({
"age" : {
"$gt" :25 }
});
### 四、 MongoDB 分片和复制####1. 分片(Sharding)
分片是指将数据分布在多台机器上,以提高存储和查询性能。
javascript// 创建一个分片集合db.createCollection("users", {
"shardKey" : {
"name" :1,
"age" : -1 }
});
####2. 复制(Replication)
复制是指将数据在多台机器上进行备份,以提高可用性和恢复能力。
javascript// 创建一个副本集合db.createCollection("users", {
"replicaSet" : "rs0"
});
### 五、 MongoDB 事务####1. 事务(Transaction)
事务是指一组操作,必须全部成功或全部失败。
javascripttry {
db.users.updateOne({
"_id" : ObjectId("..."),
}, {
$set: {
"name" : "John Doe"
}
});
db.users.insertOne({
"name" : "Jane Doe",
"age" :25,
"address" : {
"street" : "456 Elm St",
"city" : "Othertown",
"state" : "NY"
}
});
} catch (e) {
// 回滚}
### 六、 MongoDB 性能优化####1. 索引(Index)
索引是指在集合中创建一个快速查找的数据结构。
javascript// 创建一个索引db.users.createIndex({
"name" :1,
});
####2. 分区(Partitioning)
分区是指将集合中的数据划分为多个子集,以提高存储和查询性能。
javascript// 创建一个分区集合db.createCollection("users", {
"partitionKey" : {
"name" :1,
}
});
####3. 缓存(Caching)
缓存是指在内存中存储频繁访问的数据,以提高性能。
javascript// 创建一个缓存集合db.createCollection("users", {
"cacheTTL" :3600, //1小时});
### 七、 MongoDB 安全####1. 认证(Authentication)
认证是指验证用户身份以访问数据库。
javascript// 创建一个用户db.createUser({
"user" : "admin",
"pwd" : "password",
"roles" : [
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
]
});
####2. 授权(Authorization)
授权是指控制用户对数据库的访问权限。
javascript// 给一个用户授权db.grantRolesToUser(
"admin",
[
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
}
]
);
####3. 加密(Encryption)
加密是指保护数据以防止未经授权的访问。
javascript// 创建一个加密集合db.createCollection("users", {
"encryptionKey" : "key",
});
### 八、 MongoDB 监控####1. 日志(Logging)
日志是指记录数据库运行时的事件和错误信息。
javascript// 启动日志db.getLog();
####2. 监视器(Monitor)
监视器是指实时监测数据库性能和资源使用情况。
javascript// 启动监视器db.getMonitor();
### 九、 MongoDB 故障排除####1. 错误日志(Error Log)
错误日志是指记录数据库运行时的错误信息。
javascript// 查看错误日志db.getErrorLog();
####2. 性能监视器(Performance Monitor)
性能监视器是指实时监测数据库性能和资源使用情况。
javascript// 查看性能监视器db.getPerformanceMonitor();
### 十、 MongoDB 最佳实践####1. 数据库设计(Database Design)
数据库设计是指根据业务需求设计数据库结构。
javascript// 设计一个数据库db.createCollection("users", {
"fields" : [
{
"name" : "name",
"type" : "string"
},
{
"name" : "age",
"type" : "integer"
}
]
});
####2. 数据库优化(Database Optimization)
数据库优化是指根据业务需求调整数据库结构和索引。
javascript//优化一个数据库db.optimizeCollection("users", {
"fields" : [
{
"name" : "name",
"type" : "string"
},
{
"name" : "age",
"type" : "integer"
}
]
});
####3. 数据库安全(Database Security)
数据库安全是指保护数据库免受未经授权的访问。
javascript// 安全一个数据库db.secureCollection("users", {
"fields" : [
{
"name" : "name",
"type" : "string"
},
{
"name" : "age",
"type" : "integer"
}
]
});
### 十一、 MongoDB 总结MongoDB 是一个强大的 NoSQL 数据库管理系统,支持文档式存储和集合式存储。它提供了丰富的功能和特性,包括索引、分区、缓存、认

