本文主要介绍MongoDB聚合的$addField阶段的使用方法。
定义
为文档添加新字段,$addFields阶段输出文档包含了输入文档的全部字段和新增的字段。
$addFields阶段等价于$project阶段明确指定了输入文档的所有字段和新增字段。
注意:
MongoDB从4.2版本开始,增加了增加了一个新的阶段$set,是$addFields阶段的别名
语法
$addFields阶段的语法:
{
$addFields: {
<newField>: <expression>, ... } }
指定所有新增字段的名称和值,值可以是表达式或空对象。
重点:
如果新字段的名称与已有字段的名称重复(包括_id),$addFields将使用指定表达式的值覆盖已有字段的值。
行为
-
$addFields阶段可以为文档增加一个或多个新字段。 -
$addFields阶段存在于聚合操作。 -
$addFields的值可以接受嵌套对象,也可以是聚合表达式或一个空对象,下面的内嵌对象是可接受的:{ $addFields: { a: { b: { } } } }添加一个或多个字段到内嵌文档(数组文档)使用点符号。
-
$addFields与$concatArrays可以为已有数组字段添加元素。
例子
使用两个$addFields阶段
集合scores包含以下文档:
{
_id: 1,
student: "Maya",
homework: [ 10, 5, 10 ],
quiz: [ 10, 8 ],
extraCredit: 0
}
{
_id: 2,
student: "Ryan",
homework: [ 5, 6, 5 ],
quiz: [ 8, 8 ],
extraCredit: 8
}
下面的操作在$addFields阶段为输出文档增加三个字段:
db.scores.aggregate( [
{
$addFields: {
totalHomework: {
$sum: "$homework" } ,
totalQuiz: {
$sum: "$quiz" }

本文详细介绍了MongoDB聚合操作中的$addFields阶段,包括其用途、语法、注意事项,以及如何在文档中添加新字段、覆盖已有字段、处理内嵌文档和数组操作。特别提到$addFields与$set的关联,以及使用示例和应用案例。
最低0.47元/天 解锁文章
1245

被折叠的 条评论
为什么被折叠?



