MongoDB聚合:$addField

本文主要介绍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" }
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值