MongoDB $ concat数组与其他字段的值?

时间:2019-03-16 20:15:17

标签: mongodb aggregation-framework

我需要将数组的值与其他一些字段合并。

给出以下数据集:

{
  _id: ObjectId("1234"),
  field1: "test1",
  field2: "test2",  
  collection2: ['apple', 'banana', "orange"]  
}

我想要这个结果:

{
  _id:ObjectId("1234")
  fruits:"test1 apple banana orange"
}

到目前为止(在$ project阶段):

{
  'fruits': {
    '$concat': [
      '$field1', ' ',
      '$reduce': {
          'input': '$fruits',
          'initialValue': '',
          'in': {
              '$concat': [
                  '$$value',
                  {'$cond': [{'$eq': ['$$value', '']}, '', ' ']}, 
                  '$$this']
          }
      }
    ]
  }
}

我真的不明白为什么这行不通吗?

谢谢

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

db.fruits.aggregate([
    {
        $project: {
            values: {
                $reduce: {
                    input: '$collection2',
                    initialValue: '',
                    in: {
                        $concat: ['$$value',' ','$$this']
                    }
                }
            },
            field1: 1
        }
    },
    {
        $project: {
            'fruits': { '$concat': [ '$field1', '$values'] }
        }
    }
    ])