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 数据库管理系统,支持文档式存储和集合式存储。它提供了丰富的功能和特性,包括索引、分区、缓存、认