MongoDB 使用 insert() 插入对象数组的示例
⚡ 智能摘要
MongoDB 使用 insert() 函数向对象数组中添加多个文档的方法,演示了如何一次性将多个文档添加到集合中。它存储了一个员工记录数组,将数组嵌入到文档中,并使用 JSON 的 print 函数清晰地显示结果。

什么是 insert() 方法? MongoDB?
insert() 方法 MongoDB 向集合中添加一个或多个文档。文档是一组字段-值对,以 BSON(JSON 的二进制格式)存储。当您传递单个文档时,`insert()` 函数会存储该记录;当您传递文档数组时,它会在一次操作中存储所有文档,这比逐个插入要快得多。
该方法针对特定集合运行,使用模式 db.collection.insert()。如果目标集合尚不存在, MongoDB 首次插入数据时会自动创建该字段。如果您未提供 _id 字段,则每个文档还会获得一个唯一的 _id 字段,以便日后识别每个记录。
虽然 insert() 仍然有效,但较新的版本 MongoDB 版本提供了 `insertOne()` 和 `insertMany()` 这两个更清晰的替代函数。以下示例使用 `insert()` 添加一个员工文档数组,然后以易读的 JSON 格式显示结果。
添加文档数组
“insert”命令还可用于一次性将多个文档插入到集合中。以下代码示例可用于一次性插入多个文档。
下面的例子展示了如何做到这一点,
步骤1) 创建一个 JavaScript 名为 myEmployee 的变量用于保存文档数组
步骤2) 将所需文档及其字段名称和值添加到变量中
步骤3) 使用插入命令将文档数组插入到集合中
var myEmployee= [ { "Employeeid" : 1, "EmployeeName" : "Smith" }, { "Employeeid" : 2, "EmployeeName" : "Mohan" }, { "Employeeid" : 3, "EmployeeName" : "Joe" }, ]; db.Employee.insert(myEmployee);
如果命令执行成功,将显示以下输出
输出显示这 3 个文档已添加到集合中。
如何在文档中插入数组
除了插入一系列单独的文档之外, MongoDB 允许您将数组作为字段存储在单个文档中。当一条记录自然包含一系列值时,例如拥有多种技能的员工或选修多门课程的学生,此功能非常有用。因为 MongoDB 它采用灵活的文档模型,数组直接存在于对象内部,而不是存在于单独的表中,这样可以将相关数据放在一起。
以下示例插入一个员工文档,其中包含一个名为 Skills 的数组字段:
db.Employee.insert( { "Employeeid" : 4, "EmployeeName" : "Alan", "Skills" : [ "MongoDB", "Node.js", "Express" ] } );
本文档各部分的功能如下:
- 员工编号 和 员工姓名 是普通的字段和值对。
- 技能 是一个数组字段,其中包含方括号内的三个字符串值。
- 整个文档(包括嵌入的数组)通过一次插入操作即可存储。
添加记录后,您可以使用查找查询来确认嵌入的数组,该查询会将结果以 JSON 格式打印出来:
db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)
输出结果显示了嵌套在员工文档中的技能数组。 Later您可以使用 `$push` 操作符向数组中添加新值,或者通过索引位置读取单个元素。以这种方式存储关联值,可以确保每个文档都是独立的,减少跨集合的连接操作,并使数据更易于阅读和维护。
insert() 与 insertOne() 与 insertMany()
MongoDB 提供了三种相关的数据添加方法。下表对它们进行了比较,以便您选择合适的方法:
| 付款方式 | 目的 | 例如: |
|---|---|---|
| 插() | 此旧方法用于添加单个文档或文档数组。它仍然有效,但在较新的驱动程序中已被弃用。 | db.Employee.insert(myEmployee) |
| insertOne() | 添加一个文档并返回其插入的 _id。推荐用于添加单个记录。 | db.Employee.insertOne({ … }) |
| insertMany() | 一次调用即可添加一组文档,并返回所有插入的 _id。推荐用于批量插入。 | db.Employee.insertMany([ { … }, { … } ]) |
对于新项目,请使用 `insertOne()` 和 `insertMany()` 方法,因为它们能更清晰地表达意图并提供更好的错误报告。`insert()` 方法主要保留用于向后兼容旧版教程和脚本。
以 JSON 格式打印
JSON 是一种称为 Java脚本对象符号,这只是一种以有组织、易读的方式存储信息的方法。在我们的后续示例中,我们将使用 JSON 打印功能以更好的格式查看输出。
我们来看一个 JSON 格式打印的例子
db.Employee.find().forEach(printjson)
Code 说明:
- 第一个改动是将名为 `forEach()` 的函数添加到 `find()` 函数中。这样做是为了确保显式地遍历集合中的每个文档。这样,你就可以更好地控制对集合中每个文档的操作。
- 第二个变化是将 printjson 命令放入 forEach 语句中。这将导致集合中的每个文档都以 JSON 格式显示。
如果命令执行成功,将显示以下输出
输出:
输出清楚地显示所有文档都以 JSON 样式打印。


