如何在$ addFields阶段(聚合)中将字段的值用作数组索引

时间:2019-08-14 03:09:12

标签: mongodb pipeline aggregation

我在另一个数组内的数组中有一个字符串。我想将另一个字符串与已经存在的字符串连接在一起(这是两个数组的最后一个索引)。我在文档中存储了最后一个元素的索引

{
  _id: 'id',
  array1: [
    0: [...]
    ...
    m: [
      0: {}
      ...
      n: {id: 'id', string: 'hello'}
    ]
  ],
  i: m,
  j: n
}

我想连接“世界”!到array1[m][n].string的字符串,或者换句话说,到array1[$i][$j].string

我已经尝试了以下阶段,但没有一个起作用。

{ $addFields: { array1.$i.$j.string: <expression> }
{ $addFields: { array1.$[i].$[j].string: <expression> }
{ $addFields: { array1.[$i].[$j].string: <expression> }

数据

{
  _id: 'abc',
  array1: [
    0: {
      id: 'def'
      array2: [
        0: {
          id: '123',
          string: 'hello'
        }
      ]
    }
  ],
  i: 0,
  j: 0,
}

在运行管道之后,我想获得相同的结构,但字符串中带有“ hello world”。

{
  _id: 'abc',
  array1: [
    0: {
      id: 'def'
      array2: [
        0: {
          id: '123',
          string: 'hello world'
        }
      ]
    }
  ],
  i: 0,
  j: 0,
}

1 个答案:

答案 0 :(得分:0)

为了修改多个嵌套数组,一种方法是name='firstName',根据需要修改数据,最后汇总展开的数据。

$unwind