MongoDB $Set 运算符
通过本文的帮助,您将了解如何使用 $set
运算符部分更新 MongoDB 中的对象,以便新对象与现有对象重叠/合并。
$set 运算符用给定值替换字段的值。 $set
运算符表达式使用以下语法。
{ $set: { <field1>: <value1>, ... } }
您将使用点表示法在嵌入文档或数组中指定一个 <field>
。
MongoDB $set 运算符
如果该字段不存在,只要新字段不违反任何约束,$set
运算符就会创建一个具有指定值的字段。
例如,如果您为不存在的字段提供了一个点路径,$set
运算符将根据需要生成嵌入文档以完成点路径。
此外,如果您指定多个字段值对,$set 运算符将更新或创建每个字段。
您可以创建以下产品集合。
db={
"products": [
{
_id: 100,
quantity: 250,
instock: true,
reorder: false,
details: {
model: "PTI",
make: "Breakout"
},
tags: [
"jeans",
"clothing"
],
ratings: [
{
by: "CustomerIK",
rating: 3
}
]
}
]
}
设置 Top-Level 字段
对于匹配条件 _id
等于 100 的文档,下面的操作使用 $set 运算符来更新 details 字段、quantity 字段和 tags 字段的值。 下面给出了对此的查询。
db.products.update(
{ _id: 100 },
{ $set:
{
quantity: 500,
details: { model: "2600", make: "Outfitters" },
tags: [ "coats", "outerwear", "clothing" ]
}
}
)
上面的操作更新了下面的内容。
- 数量值到 500。
- 带有新嵌入文档的详细信息字段
- 用新数组标记字段
上面查询的结果显示在下面的屏幕截图中。
在嵌入式文档中设置字段
您将使用点符号在嵌入文档或数组中指定 <field>
。 对于匹配条件 _id
等于 100 的文档,以下操作更新详细信息文档中的 make 字段。
下面给出了对此的查询。
db.products.update(
{ _id: 100 },
{ $set: { "details.make": "Breakout Kids" } }
)
上面查询的结果显示在下面的屏幕截图中。
在数组中设置元素
以下操作修改 tags 字段的第二个元素(数组索引为 1)中的值和 ratings 数组的第一个元素(数组索引为 0)中的 rating 字段中满足条件 _id 等于 100 的文档。
下面给出了对此的查询。
db.products.update(
{ _id: 100 },
{ $set:
{
"tags.1": "wind breaker",
"ratings.0.rating": 2
}
}
)
上面查询的结果显示在下面的屏幕截图中。
$set(聚合)
$set(聚合)向文档添加新字段。 $set 输出包含输入文档中所有现有字段和新添加字段的文档。
$set(聚合)具有以下语法。
{ $set: { <newField>: <expression>, ... } }
$set 是一个向现有文档添加新字段的命令。 用户可以在聚合操作中包含一个或多个 $set 阶段。
使用点符号向嵌入文档(包括数组中的文档)添加字段或字段。 使用 $concatArrays
将元素添加到使用 $set 的现有数组字段。
使用两个 $set 阶段
使用以下内容创建示例成绩集合。
db={
"grades": [
{
_id: 1,
student: "Ali",
homework: [10, 8, 9],
quiz: [9, 8],
extraCredit: 3
},
{
_id: 2,
student: "Manahil",
homework: [3, 8, 5],
quiz: [7, 9],
extraCredit: 6
}
]
}
在以下过程中使用两个 $set
阶段将三个新字段添加到输出文档。 下面给出了对此的查询。
db.grades.aggregate( [
{
$set: {
totalHomework: { $sum: "$homework" },
totalQuiz: { $sum: "$quiz" }
}
},
{
$set: {
totalScore: { $add: [ "$totalHomework", "$totalQuiz", "$extraCredit" ] } }
}
] )
该操作返回以下文档,如下面的屏幕截图所示。
向嵌入文档添加字段
使用以下内容创建样本收集传输。
db={
"transport": [
{
_id: 1,
type: "sedan",
specs: { doors: 4, wheels: 4}
},
{
_id: 2,
type: "motorbike",
specs: {doors: 0, wheels: 2}
},
{
_id: 3,
type: "jet ski"
}
]
}
以下聚合操作在嵌入式文档规范中创建一个新字段 fuel_type。 下面给出了对此的查询。
db.transport.aggregate( [
{ $set: { "specs.fuel_type": "super" } }
] )
该操作返回以下结果,如下面的屏幕截图所示。
覆盖现有字段
当 $set 操作指定现有字段名称时,原始字段将被替换。 使用以下项目制作宠物样本集。
db={
"pets": [
{
_id: 1,
dogs: 10,
cats: 5
}
]
}
随后的 $set 操作覆盖了 cats 字段。 下面给出了对此的查询。
db.pets.aggregate( [
{ $set: { "cats": 20 } }
] )
该操作返回以下文档,如下面的屏幕截图所示。
向数组添加元素
使用以下记录创建示例成绩集合。
db={
"grades": [
{
_id: 1,
student: "Ali",
homework: [10, 8, 9],
quiz: [9, 8],
extraCredit: 3
},
{
_id: 2,
student: "Manahil",
homework: [3, 8, 5],
quiz: [7, 9],
extraCredit: 6
}
]
}
用户可以将 $set 运算符与 $concatArrays 表达式一起使用。 这会将一个元素添加到现有的数组字段中。
以下操作使用 $set 将 homework 字段替换为一个新数组,该数组的元素是当前 homework 数组与另一个包含新分数 [ 7 ] 的数组连接而成。 下面给出了对此的查询。
db.grades.aggregate([
{ $match: { _id: 2 } },
{ $set: { homework: { $concatArrays: [ "$homework", [ 7 ] ] } } }
])
该操作返回以下文档,如下面的屏幕截图所示。
在本文中,您学习了如何使用 $set 运算符部分更新 MongoDB 中的对象,以便新对象与现有对象重叠/合并。
相关文章
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 中更新用户密码
发布时间: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 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。
使用 NodeJS 检查 MongoDB 中是否存在集合
发布时间:2023/04/21 浏览次数:194 分类:MongoDB
-
在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。