MongoDB 中 $push 和 $addToSet 的区别
本文解释了 MongoDB 中的运算符。 $push 和 $addToSet 运算符的用途是什么。
此外,这两个运算符之间的区别在代码段中给出。 本文讨论以下主题。
- MongoDB 中的运算符
- $在 MongoDB 中推送
- MongoDB 中的 $addToSet
MongoDB 中的运算符
运算符是通知编译器或解释器执行数学或逻辑运算的特殊符号或关键字。
查询运算符允许开发人员创建复杂的查询以与匹配其应用程序的数据集进行交互,从而增强了 MongoDB 的功能。
下面解释了 MongoDB 中不同类型的运算符。
- 查询和投影运算符 - 查询运算符有助于发现数据库中的数据,而投影运算符会改变数据的显示方式。
- 更新操作员 - 更新操作员允许您更改或添加数据到您的数据库。
- 聚合管道阶段 - 聚合管道的可用聚合阶段。
- Aggregation Pipeline Operators - 聚合管道操作有一组操作符可用于在管道阶段定义和操作文档。
- 查询修饰符——查询修饰符决定查询将如何执行。
MongoDB 中的 $push 运算符
MongoDB 中的 $push 运算符用于将给定值附加到数组。 $push 运算符是一种更新运算符。
如果要更新的文档中不存在指定字段,则 $push 运算符将其添加为新字段,并将指定值作为其元素。 如果更新字段不是数组类型,则操作失败。
如果该值是一个数组,则 $push 运算符在更新时将整个数组作为单个元素附加。 如果您希望单独添加每个值元素,请使用带有 $each 修饰符的 $push 运算符。
语法:
db.collection.update( <query>,{ $push: { <field>: <value> } })
以下数据库集合将在所有示例中使用。
简单集合:
db={
"student": [
{
"_id": 1,
"sem": 1,
"subjects": [
"phys",
"chem",
"maths",
"gkn",
"stat",
"astro"
],
"achieve": [
70,
87,
90,
90,
65,
81
]
}
]
}
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 使用 $each 修饰符的例子
如果我们想将许多条目或多个元素 (77、49、83) 附加到为条件科目为“数学”的记录学生完成的数组,我们可以使用下面的 MongoDB 命令。
db.student.update( { "subjects" : "maths" },{ $push: { "achieve": {$each : [77,49,83 ]} } });
$each 修饰符在上面的示例中用于将多个条目 77、49、83 附加到与标准主题“maths”匹配的数组完成。
查看最新更新的文档:
db.student.find().pretty();
上面给出的查询的输出可以在这个截图中看到。
MongoDB 中的 $addToSet
$addToSet
运算符仅在数组中不存在值时才将值添加或附加到数组。 当值已经在数组中时,$addToSet 返回相同的数组而不改变它。
$addToSet
运算符确保更新时数组中没有重复条目; 但是,可以在添加值后修改显示中元素的顺序。
语法:
db.collection.update( { <field>: <value> }, { $addToSet: { <field>: <addition> } } );
上面使用的集合:
{ "_id" : 1, "sem" : 1, "achieve" : [ 80, 70, 90 ] }
$addToSet 附加值的示例
如果我们想将值 92 附加到数组,我们可以使用下面的 MongoDB 命令。
db.student.update( { "sem": 1}, { $addToSet: { "achieve": 92 } } );
前面的代码将 92 附加到数组字段完成。
查看最新更新的文档:
db.student.find().pretty();
命令的输出:
{ "_id" : 1, "achieve" : [ 70, 80, 90, 92 ], "sem" : 1 }
$addToSet 使用 $each 修饰符添加多个值的示例
以下 MongoDB 命令可以将数字 10 和 11 附加到数组字段完成。
db.student.update( { "sem": 1}, { $addToSet: { "achieve":{$each:[10,11]}}});
在上面的示例中,数字 10 和 11 附加到使用 $each 修饰符实现的数组字段。
查看最新更新的文档:
db.student.find().pretty();
上面给出的查询的输出可以在这个截图中看到。
相关文章
MongoDB 中的 $unset 运算符
发布时间:2023/05/10 浏览次数:135 分类:MongoDB
-
本文将讨论 $unset 运算符在 MongoDB 中的工作原理。 此外,我们将演示使用此运算符从 MongoDB 集合中的所有文档中删除一个字段。MongoDB 中的 $unset 运算符 $unset 是用于从实体中删除字段的运算符。
MongoDB 中的 $ne 运算符
发布时间:2023/05/10 浏览次数:82 分类:MongoDB
-
本文将讨论 $ne 运算符如何在 MongoDB 中工作。 另外,我们会列举它与$not操作符的区别。MongoDB 中的 $ne 运算符 $ne 是MongoDB中的一个运算符,代表不等于。
MongoDB $Set 运算符
发布时间:2023/05/10 浏览次数:54 分类:MongoDB
-
在本文中,我们将学习如何使用 $set 运算符部分更新 MongoDB 中的对象,以便新对象与现有对象重叠/合并。
在 MongoDB 中更新用户密码
发布时间:2023/05/10 浏览次数:156 分类:MongoDB
-
本文将讨论如何更新 MongoDB 数据库的用户密码,并且我们还将看到一个与该主题相关的示例以使其更容易。在 MongoDB 中更新用户密码
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 MongoDB 中的集合添加字段的挑战。
MongoDB 截断集合
发布时间:2023/04/21 浏览次数:178 分类:MongoDB
-
可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。
删除 MongoDB 中的重复项
发布时间:2023/04/21 浏览次数:151 分类:MongoDB
-
在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。