原标题:MongoDB 快速入门实战教程最新版
在上一篇 《MongoDB 实战教程:数据库与调集的 CRUD 操作篇》 中,咱们学习了MongoDB 与 NoSQL 的联系、 MongoDB 的装置、数据类型、MongoShell、创立数据库、显式创立调集和隐式创立调集,还学习了怎么更改调集称号以及删去数据库和调集的办法,并对每种操作都进行了实例演示。
在本篇 chat 中咱们将学习流式聚合操作,并深化了解句子的履行功率。然后深化学习能够进步数据服务可用性的仿制集。接着了解 MongoDB 的水平扩展才能,学习 MongoDB 数据的备份与复原办法,并为数据服务敞开拜访操控。
根底篇 一 文档的 CRUD 操作
CRUD 操作指的是对文档进行 `create`,`read`,`update` and `delete` 操作,即增修改查。文档 CRUD 操作的内容将分为 `Create Operations`, `Read Operations`, `Update Operations`, `Delete Operations` 和 `Cursor` 等 5 个部分进行介绍。
Create Operations
创立操作或许刺进操作会向调集增加新的文档。之前有提到过,假如刺进时调集不存在,刺进操作会创立对应的调集。MongoDB 供给了 3 个刺进文档的办法:
- `db.collection.insert`
- `db.collection.insertOne`
- `db.collection.insertMany`
刺进单个文档
其间,`db.collection.insertOne` 用于向调集刺进单个文档。而 `db.collection.insertMany` 和 `db.collection.insert` 能够向调集刺进多个文档。`db.collection.insertOne` 示例如下:
主动指令履行后会回来一个成果文档,文档输出如下:
这说明文档刺进成功。其间,`acknowledged` 代表本次操作的操作状况,状况值包括 `true` 和 `false`。`insertedId` 即该文档的 `_id`。
提示:示例中的省略号是 MongoShell 的换行标识符。换行标识符对指令输入和履行并没有影响,所以本文也不会重视风格的一致,即示例中有时会带有换行符,有时则不带有换行符。
刺进多个文档
`db.collection.insertMany` 示例如下:
因为本次刺进了 2 个文档,所以回来的成果文档会显现两个 `_id`。回来文档内容如下:
`db.collection.insert` 示例如下:
示例演示的是单个文档的刺进,实际上刺进多个文档也是没问题的。`db.collection.insert` 刺进单个文档时回来的是一个带有操作状况的 `WriteResult` 目标:`WriteResult({ "nInserted" : 1 })` 。其间,`nInserted` 表明晰刺进文档的总数。但假如刺进操作遇到过错,那么 `WriteResult` 目标将包括过错提示信息。
`db.collection.insert` 刺进多个文档的示例如下:
能够看到,`db.collection.insert` 刺进多个文档和刺进单个文档得到的回来成果是不同的。
Read Operations
MongoDB 供给了 `db.collection.find` 办法从调集中读取文档。在开端操练之前,需求预备用于操练的根底数据。在 MongoShell 中履行以下文档刺进操作:
查询文档
将一个空位当作为查询过滤器参数传递给 `db.collection.find` 办法就能够得到一切文档,对应示例如下:
或许什么都不传,直接运用 `find`,对应示例如下:
这等效于 SQL 中的 `SELECT * FROM inven`。
更多关于元素查询操作符的常识可查阅官方文档 Element Query Operators。
限于篇幅
▼
这是写给 0 根底同学的 MongoDB 快速入门文章。内容从文档 CRUD 到流式聚合操作;从履行计划、索引、数据模型到仿制集;从分片、拜访操控到数据备份与复原。6 篇近 10 万字的内容覆盖了 MongoDB 的大部分常识点,彻底满意日常开发的要求。
在本场 Chat 中,你将收成:
文档的 CRUD 操作和 Cursor 目标
把握流式聚合操作
了解 MongoDB 的查询功率和优化
怎么进步 MongoDB 的可用性
怎么应对数据服务毛病
了解 MongoDB 的拜访操控
学会用数据模型下降数据冗余,进步功率
把握 mongodump 数据备份与复原办法
合适人群:
对 MongoDB 感兴趣的 0 根底爱好者/开发者
有必定根底,想要全面了解 MongoDB 的开发者
假如我们还有其他想问提想跟作者沟通的,能够加微信「xiangcode」
责任编辑: