在上一篇 《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」

MongoDB 快速入门实战教程最新版相关推荐

  1. influxDB快速入门实战教程

    文章目录 influxdb是什么 influxdb数据模型 influxdb数据存储架构 influxdb部署运行 influxdb基本操作 influxdb是什么 时序数据库是近几年一个新的概念,与 ...

  2. EasyUI快速入门实战教程(一)

    1.jQuery EasyUI概述 jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开 ...

  3. Python教程:网络爬虫快速入门实战解析

    建议: 请在电脑的陪同下,阅读本文.本文以实战为主,阅读过程如稍有不适,还望多加练习. 网络爬虫简介 网络爬虫,也叫网络蜘蛛(Web Spider).它根据网页地址(URL)爬取网页内容,而网页地址( ...

  4. Python之Numpy入门实战教程(2):进阶篇之线性代数

    Numpy.Pandas.Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程.NumPy是使用Python进行科学计算的基础库. NumPy以强大的N维数组对象 ...

  5. Python之Numpy入门实战教程(1):基础篇

    Numpy.Pandas.Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程.NumPy是使用Python进行科学计算的基础库. NumPy以强大的N维数组对象 ...

  6. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  7. 视频教程-深度学习与PyTorch入门实战教程-深度学习

    深度学习与PyTorch入门实战教程 新加坡国立大学研究员 龙良曲 ¥399.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5元 ↓ ...

  8. Spring Boot 入门实战教程

    Spring Boot 2.0 入门实战教程 开发环境:JDK1.8或以上 源码下载:https://pan.baidu.com/s/1Z771VDiuabDBJJV445xLeA 欢迎访问我的个人博 ...

  9. Python3网络爬虫快速入门实战解析

    Python3网络爬虫快速入门实战解析 标签: python网络爬虫 2017-09-28 14:48 6266人阅读 评论(34) 收藏 举报 分类: Python(26) 作者同类文章X 版权声明 ...

最新文章

  1. pycharm 常用代码签名
  2. 谷歌Deep Bootstrap Framework:在线优化角度理解神经网络
  3. boost::type_erasure::subscriptable相关的测试程序
  4. [html] 如果让你实现一个网页版的办公表格(类似excel),你觉得是否可行?如果可行应该怎么做?
  5. jtoken判断是否包含键_Redis 数据库、键过期的实现
  6. 04737 c++ 自学考试2019版 第二章课后程序设计题 3
  7. Java虚拟机运行时数据区
  8. Amazon Lambda支持以简单队列服务作为事件源了
  9. MyBatis的9种设计模式,我猜你不知道
  10. getAttribute实例例java,Java AttributedCharacterIterator.getAttribute方法代码示例
  11. python listbox排序_Python3.3.2 tkinter ttk TreeView percolumn排序只按最后一列排序?
  12. 加密日记 android,Lifeograph加密日记应用程序
  13. 关于虚拟机,影子系统和游戏机器码的问题
  14. 春节红包战:他们到底在争什么?
  15. Task Scheduler 对win7中任务计划的编程
  16. 滴滴宋世君:数据分析师究竟是做什么的?
  17. 作为一名优秀的程序员,如何选购适合自己的显示器
  18. 浅谈opencv3.2中各个模块的简介
  19. aurora协议学习之时钟补偿
  20. 生成的SMILES以及对应的图像的评价指标【1】

热门文章

  1. [Python] pdb 调试
  2. 限时秒杀的整体代码在html中,限时秒杀.html
  3. 十二月十六日鸿蒙,华为12月16日举行鸿蒙 2.0 手机开发者Beta活动,分享鸿蒙OS2.0设计理念...
  4. 双机热备的缺点_弱电工程中的双机热备是什么?带你了解服务器双机热备
  5. 双系统ubuntu 删除后重装
  6. [SQL实战]之查找当前薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
  7. Flutter基础—常用控件之图片
  8. 中国哌唑替芬行业市场供需与战略研究报告
  9. 2021-2025年中国超细氢氧化铝行业市场供需与战略研究报告
  10. java中jtextpane_Java JTextPane