更新 MongoDB 中的 Push 数组
这篇文章将向您展示如何使用各种技术向 MongoDB 中的数组添加元素。 将元素推送或添加到数组对于通过在现有 MongoDB 文档中添加或移动对象来快速附加列表非常方便。
本课程将教授如何使用负整数和正整数进行推送操作,负整数为将数据放入数组提供额外的推送可能性。
先决条件:
- 必须正确安装和配置 MongoDB 才能将元素添加到 MongoDB 中的数组。
- 基本了解数组的功能。
我们先来看看这篇文章的目录。
- MongoDB 中的运算符
- MongoDB 中的 $push 运算符
- 将元素推送到数组
- 将元素推入数组的开头
- 将元素压入数组末尾
MongoDB 中的运算符
运算符是特殊符号或关键字,它们告诉编译器或解释器如何进行数学或逻辑运算。 查询运算符允许开发人员编写复杂的查询来与与其应用程序相关的数据集进行交互,从而扩展了 MongoDB 的功能。
以下是 MongoDB 中的各种运算符。
- 查询和投影运算符 - 查询运算符有助于发现数据库中的数据,而投影运算符会改变数据的显示方式。
- 更新操作员 - 更新操作员允许您更改或添加数据到您的数据库。
- 聚合管道阶段 - 聚合管道的可用聚合阶段。
- Aggregation Pipeline Operators - 聚合管道操作有一组操作符可用于在管道阶段定义和操作文档。
- 查询修饰符——查询修饰符决定查询将如何执行。
MongoDB 中的 $push 运算符
在 MongoDB 中,$push 运算符用于将值附加到数组。 $push 运算符是一个更新运算符。
如果提供的字段不在正在更改的文档中,则 $push 运算符将其创建为一个新字段,并将指定值作为其元素。 如果更新字段不是数组类型,则操作失败。
更新时,如果值是数组,$push 运算符会将整个数组作为单个元素附加。 使用带有 $each 修饰符的 $push 运算符来单独添加每个值元素。
语法:
db.collection.update( <query>,{ $push: { <field>: <value> } })
MongoDB $push 运算符示例:
如果你想在条件科目是maths时完成的数组字段追加95,我们可以使用下面的MongoDB命令。
db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });
由于前面示例中描述的条件与此操作相匹配,因此值 95 将附加到已完成的数组中。
查看最新更新的文档:
db.student.find().pretty();
上面给出的查询的输出可以在这个截图中看到。
当字段不是数组时 MongoDB $push 的例子:
如果你想在不是数组类型字段的sem列上加2,我们可以使用下面的MongoDB命令。
db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });
因为上面例子中的 sem 字段不是数组类型,所以会运行失败,产生如下结果。
Cannot apply $push/$push All modifier to non-array
将元素推送到 MongoDB 中的数组
本节介绍如何使用 $push 运算符(例如更新操作)将元素添加到数组。
首先,创建一个包含水果的示例数据集,如下所示。
use fruitdb
switched to db fruitdb
db.fruit.insert({
"_id": "100",
"fruitArray": ['mango', 'banana', 'orange']
});
WriteResult({ "nInserted" : 1 })
现在使用以下命令验证插入过程。
db.fruit.find({_id: "100"});
结果应类似于以下内容。
现在将另一个水果添加到 fruitArray 中。 在这个例子中,执行以下命令来添加菠萝。
db.fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: "pineapple"
}
}
);
结果应类似于以下内容。
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
执行以下命令以验证菠萝是否已作为元素成功添加到 fruitArray 中。
db.fruit.find({_id: "100"}).pretty();
输出应如下所示。
结果表明 $push 运算符将单词 pineapple 插入到 fruitArray 的末尾。
在 MongoDB 中将元素推送到数组的开头
上一节描述了如何将新元素附加到数组的开头。 本节将演示如何在数组的开头插入元素 grapes。
以下命令用于执行此操作。
db.fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: {
$each: ['grapes'],
$position: 0
}
}
}
);
然后,以下命令可以确认更新过程是否成功。
db.fruit.find({_id: "100"}).pretty();
输出应类似于以下内容。
在前面的操作中使用了运算符 $position。 顾名思义,此命令将元素放置在用户定义的数组中。
另外,请记住,用于 $position 值的正整数将从数组的左侧或开头推入。
在 MongoDB 中将元素压入数组的末尾
上一节演示了如何使用正整数作为 $position 运算符的值在数组的开头插入元素。 这部分将教您如何使用负整数作为值来推送项目,如此处所示。
db. fruit.update(
{ "_id": "100" },
{
$push: {
fruitArray: {
$each: ['apple'],
$position: -1
}
}
});
输出应类似于以下内容。
使用 -1 作为值,apple 被放在元素列表的倒数第二个位置,最后一个元素在位置 0。
在 MongoDB 中推送多个元素
本节介绍如何将多个元素插入或压入数组。
首先,在水果文档中,添加另一个数组。
db. fruit.insert({
"_id": "101",
"fruitArray": ["strawberry","guava","lemon"]
});
应生成包含以下信息的新文档。
现在,使用以下命令将大量元素添加到新文档中。
db.fruit.update(
{ "_id": "101" },
{
$push: {
fruitArray: {
$each: ['pear', 'cherry', 'lime'],
$position: -2
}
}
}
);
由于项目 ['pear', 'cherry', and 'lime']
在上面的代码中被压入,这个数组可以被视为一个元素。 这会将 pear 推或移动到指定的位置 -2,然后依次是 cherry 和 lime。
应该注意的是,元素将按照给定的顺序添加到数组中。
本文向您介绍了在 MongoDB 中向数组添加元素的各种方法。 首先,课程演示了如何使用 $push 运算符向数组添加元素,例如更新操作。
然后演示了如何生成样本数据集,将元素插入数组,最后测试插入过程。 文章还讨论了如何在数组的开头、中间和结尾压入元素以及如何压入多个元素。
请记住,作为值的负整数会将元素推到数组的末尾,而正整数会将元素从数组的左侧或开头推入。
相关文章
在 MongoDB Shell 中列出所有数据库
发布时间:2023/05/11 浏览次数:75 分类:MongoDB
-
交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。
MongoDB 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:137 分类:MongoDB
-
这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 MongoDB 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:162 分类:MongoDB
-
在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 MongoDB
发布时间:2023/05/11 浏览次数:180 分类:MongoDB
-
要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便
在 MongoDB 中存储日期和时间
发布时间:2023/05/11 浏览次数:199 分类:MongoDB
-
本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。
MongoDB 按 ID 查找
发布时间:2023/05/11 浏览次数:139 分类:MongoDB
-
MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。
检查 MongoDB 服务器是否正在运行
发布时间:2023/05/11 浏览次数:127 分类:MongoDB
-
这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。
MongoDB 中的分页
发布时间:2023/05/11 浏览次数:140 分类:MongoDB
-
这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。
MongoDB 从查询开始
发布时间:2023/05/11 浏览次数:135 分类:MongoDB
-
在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。