MongoDB 中的 CRUD 操作:示例教程

已发表: 2020-02-05

随着网络的不断发展,我们现在看到 MongoDB 和其他文档对象数据库正在成为传统基于 SQL 的数据库的替代品。 与 SQL 数据库相比,这些文档对象数据库有几个优势,所有这些优势中最突出的优势包括可伸缩性和敏捷性。

需要注意的是,MongoDB 中的数据是以二进制编码的 JSON (BSON) 文档格式存储的。 这种格式可能需要保存嵌入文档的数组或为此值。 文档在 MongoDB 中形成一条记录,这是一个由值和字段对创建的结构。

现在让我们讨论 MongoDB 中的创建、更新、检索和删除操作或 CRUD 操作。 这些函数可以大致归类为 MongoDB 中的数据修改函数。 这些只能用于单个集合。 Insert 是 MongoDB 中的一个函数,可用于向数据库添加数据。

目录

MongoDB 中的 CRUD 操作列表

1. 创建文档

如何使用 MongoDB 创建对象? MongoDB 使用 BSON(JSON 的二进制表示)进行存储。 因此,很容易理解用于在数据库中执行不同操作的方法与 JavaScript 有一些关系。 让我们创建一个用户和用户的集合。 还需要注意的是,SQL 中的表等同于 MongoDB 中的集合。
db.users.save({name:”Mike”, job:”doctor”,email:”[email protected]”})
此示例使用 MongoDB save() 将数据保存到集合中。

2. 插入文件

  • 批量插入:此功能允许将文档列表同时添加到数据库中。 一个批次在特定时间点可能有数百甚至数千个文档。 由于具有插入多个文档的能力,此函数的工作速度比其他插入函数快得多。 批量插入不需要您对成百上千的文档提出单独的请求。 相反,它作为一个传输控制协议 (TCP) 请求工作。 由于不涉及标头处理活动,因此插入期间花费的时间总是显着减少。 每个必须插入的文档都带有一个标题,该标题将需要执行的操作传达给数据库。 大多数情况下,批量插入用于保存传感器数据和服务器日志。
  • Mongoimport :Mongoimport 是一个命令行工具,用于代替批量插入 MySQL、Oracle 或任何其他关系数据库管理系统 (RDBMS) 的基本数据。 有时您可能需要在将文档存储到 MongoDB 之前对文档进行更改(添加自定义 ID)。 您应该知道的另一件重要的事情是 MongoDB 只接受 16 MB 的消息。 因此,批量插入限制了它可以拥有的消息数量。
  • Unordered bulk insert :在这个函数中,MongoDB 写入操作不遵循任何顺序。 如果发生错误,它将继续进行没有任何中断的写入操作。 MongoDB 在执行时形成一组无序操作。 MongoDB 还可以通过在执行前重新排序列出的操作来寻求性能提升。 因此,在考虑使用此功能进行批量插入时,应用程序不必依赖序列。 Bulk.getOperations() 可用于查看 MongoDB 如何对一组操作进行分组,然后执行它们。 该命令可用于同时添加三个文档,但没有任何顺序。
  • Ordered bulk insert:在这个函数中,MongoDB在写操作时遵循一个顺序。 任何写入操作期间的错误会导致 MongoDB 不执行其他写入操作。 有序操作根据它们的连续性和类型进行分组。 属于同一类的相邻有序操作被分组。

例如,如果一个有序列表有一个插入操作,然后是一个删除操作,然后是两个更新操作,MongoDB 将创建三个组来堆叠这些操作。 第一组将包含一个插入操作。 第二组将有一个删除操作。 第三组将两个更新操作放在一起。

预计 MongoDB 的未来版本将适当地处理此行为。 每组有序批量列表不能超过 1000 个操作。 如果数量超过该最大限制,MongoDB 将创建 1000 个或更少操作的较小组,以遵守此限制。 因此,如果有 7000 个有序批量操作,则将有 7 个组,每组由 1000 个批量操作组成。 要查看分组和执行是如何完成的,首先执行批量插入命令,然后使用 Bulk.getOperations 命令。 该命令可用于按顺序添加三个文档。

3. 检索/阅读文档

MongoDB 中的每个查询都针对特定的文档。 MongoDB 根据查询中定义的条件识别文档,然后将这些文档返回到其预期目的地。 文档检索查询可以具有提及与需要返回的文档字段匹配的条件或标准的投影。

可以修改查询以放置跳过、限制和排序顺序。

现在让我们讨论如何指定相等条件。 使用 findOne() 命令来识别文档的第一条记录。 要以正确的格式显示结果,您可以使用 pretty 方法。

使用 db.items.find().pretty() 查询来识别集合中列出的所有文档,并以标准化格式显示所有文档。 您可以使用空查询来选择所有文档 - db.items.find( {} ) - 此查询末尾有一个空查询子句 - 因此它将识别集合中列出的所有文档。

不使用查询文档指定 find 方法并使用空查询都将提供相同的结果。 因此, db.items.find( {} ) 和 db.items.find() 查询在它们用于的结果方面是等效的。

您可以操作查询并使用查询游标方法,而 count 方法可让您找出集合中与您的查询匹配的文档数。 db.items.count()

4. 更新文件

您需要使用 update() 方法来更新 MongoDB 中的文档。 update 方法有两个重要的元素——查询和更新。 查询参数首先出现,然后是更新参数。 这是一个例子

db.users.update({name:”Mike”}, {age: 32})

但是,这不是更新值对的正确方法,在这种情况下是年龄。 这样,您将覆盖文档中的所有内容。 唯一会留在这个时代的东西。 因此,当我们必须更新整个文档中的单个值对时,我们需要使用几个关键字。

db.users.update({name: “Mike”}, { $set: { age: 28}})

这不会覆盖任何东西。 您将保留文档中的所有信息。 只有年龄的值会被更新。

5. 删除文件

使用 remove 方法 - db.courses.remove() - 从集合中删除文档。 此命令将从给定集合中删除所有文档。 它不会删除的是索引和集合本身。 有时,remove 命令可以将查询作为参数。 如果要删除与查询中提到的条件匹配的文档,请使用 db.items.remove({“item”: “Pen”) 命令。

使用 db.items.remove({" item" : "Bag},1) 命令从集合中仅删除一个文档。 要删除所有文档、集合和索引,请使用 db.courses.drop() 命令(drop 方法)。

结论

如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

引领数据驱动的技术革命

超过 400 小时的学习时间。 14 种语言和工具。 IIIT-B 校友身份。
IIIT Bangalore 大数据高级证书课程