### MongoDB入门总结 #### 一、MongoDB简介 MongoDB是一种非关系型的文档数据库,以其灵活的数据模型、高性能及可扩展性而受到广大开发者的欢迎。它支持动态查询、索引、复制等功能,并且拥有丰富的社区支持和文档资源。 **1.1 文档结构模型数据库** MongoDB采用了面向文档的数据存储方式,每个文档都是由一系列键值对组成的。这样的设计非常适合处理大量非结构化数据,特别适用于大数据量、高并发以及对事务性要求较低的应用场景。 **1.2 数据存储** - **集合(Collection)**:在MongoDB中,数据被分组存储在集合中,类似于传统关系型数据库中的表。 - **文档(Document)**:每个集合包含多个文档,文档是以键值对形式表示的数据单位,类似于JSON对象。 - **键**:文档中的键是字符串形式。 - **值**:值可以是任意数据类型,包括嵌套的文档、数组等。 **1.3 共享公共索引的集合** 集合是一组具有相同结构的文档集合,通常它们共享相同的索引,以提高查询效率。 **1.4 存储引擎** MongoDB使用内存映射文件技术,将磁盘上的文件映射到内存中,以此来提升数据的读写性能。当执行查询时,MongoDB会采用分批次的方式返回结果,即“懒加载”,这有助于优化资源利用,避免一次性加载过多数据造成不必要的资源浪费。 #### 二、MongoDB基本操作 **2.1 插入文档** 在MongoDB中,可以通过`db.collection.insert()`命令来插入新的文档。如果插入时未指定_id,则MongoDB会自动生成一个ObjectId类型的_id。 ```javascript db.orders.insert([ { "onumber": "001", "date": "2015-07-02", "cname": "zcy", }, { "onumber": "002", "date": "2015-07-02", "cname": "zcy1", } ]) db.orders.insert({ "onumber": "001", "date": "2015-07-02", "cname": "zcy", "items": [ { "ino": "001", "quantity": 2, "price": 4.0, "products": [ { "pno": "001", "pName": "p1" }, { "pno": "002", "pName": "p2" } ] }, { "ino": "002", "quantity": 2, "price": 6.0, "products": [ { "pno": "003", "pName": "p3" }, { "pno": "004", "pName": "p4" } ] } ] }) ``` **2.2 更新文档** 使用`db.collection.update()`命令可以更新文档中的数据。 ```javascript // 更新单个文档 db.orders.update( {"onumber": "001"}, {"$set": {"cname": "zcy"}}, false, true ) // 更新嵌套文档 db.orders.update( {"onumber": "001", "items.ino": "001"}, {"$set": {"items.$.price": 8.0}} ) // 更新嵌套文档中的特定字段 db.orders.update( {"onumber": "001", "items.ino": "001", "items.products.pno": "001"}, {"$set": {"items.0.products.$.pName": "ps"}} ) ``` **2.3 删除文档** - **删除文档** - `db.collection.remove({})`:删除集合中的所有文档。 - `db.collection.remove({"onumber": "001"})`:根据条件删除文档。 - **删除集合** - `db.collection.drop()`:删除整个集合及其所有索引。 **2.4 创建集合** 创建集合时,可以根据需求设置为固定大小集合(capped collection),这种集合在创建时需要指定最大大小和文档数量。 ```javascript db.createCollection("capped_col1", {capped: true, size: 100000, max: 100}); ``` **2.5 查询文档** - **查询文档** - `db.collection.find(query, projection)`:根据条件查询文档,并可以选择返回哪些字段。 - `db.collection.findOne()`:返回第一个匹配的文档。 - **游标的使用** - 默认情况下,游标会在10分钟后自动关闭。 - 可以通过`addOption(DBQuery.Option.noTimeout)`来设置不自动关闭游标。 ```javascript var cursor = db.items.find().addOption(DBQuery.Option.noTimeout); // 遍历游标 while (cursor.hasNext()) { print(cursor.next()); } ``` 以上是MongoDB的一些基础操作介绍,通过这些操作,我们可以进行简单的数据管理。MongoDB还有更多高级功能,如聚合框架、地理空间索引等,值得进一步探索和学习。
剩余17页未读,继续阅读
- 粉丝: 11
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助