如何在MongoDB中将数组展平为新字段

时间:2018-03-29 19:27:12

标签: arrays mongodb mongodb-query

我有一个文档,其中包含一个名为enabled_domain的数组字段,其中包含1,2或更多元素。我需要将此数组展平为一个新字段,因此它将是一个字符串字段,例如,所有数组字段元素的串联以逗号分隔。

到目前为止,我所做的是:

db.myCollection.aggregate(
   [
      { 
          $project: { 
              enabled_domain_2: { 
                  $reduce: {
                      input: "enabled_domain",
                      initialValue: "",
                      in: { 
                          $concat: [ '$$value', '$$this' ] 
                          }
                      }
                  }
              }
          }
   ]
)

......但它不起作用。

myCollection的样本是:

{
    "_id" : ObjectId("56c1fd43e4b0a6078c98108f"),
    "enabled_domain" : [ 
        "A", 
        "B"
    ]
}

/* 2 */
{
    "_id" : ObjectId("5436044fb700a771a18eeac0"),
    "enabled_domain" : [ 
        "A"
    ]
}

如何进行此操作?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您只需在$reduce中添加美元符号即可引用现有数组:

db.myCollection.aggregate(
   [
      { 
          $project: { 
              enabled_domain_2: { 
                  $reduce: {
                      input: "$enabled_domain",
                      initialValue: "",
                      in: { 
                          $concat: [ '$$value', '$$this' ] 
                          }
                      }
                  }
              }
          }
   ]
)

这就是你所缺少的