猿问

mongodb中如何将数组转换为字符串

我有以下架构


{

 id: 123,

 values:[

   {valueId: "12444", name: "asd"},

   {valueId: "555", name: "www"},

 ]

}

我想将其转换为(合并name为单个字符串)


{

 id: 123,

 values: "asdwww"

}

我尝试过下面的聚合,它将所有名称值放入一个数组中


$project: {

      attributes: {

        "$map": {

          "input": "$attributes",

          "as": "attr",

          "in": {

            "id": "$$attr.id",

            "values": "$$attr.values.name"

          }

        }

      }

    },

这使得它变成


{

 id: 123,

 values:[

     "asd",

     "www"

   ]

}

我想要将值作为单个字符串值"asd,www"或"asdwww"


qq_遁去的一_1
浏览 317回答 1
1回答

哆啦的时光机

你需要$reduce而不是$map:db.collection.aggregate([    {        $project: {            _id: 1,            values: {                $reduce: {                    input: "$values",                    initialValue: "",                    in: { $concat: [ "$$value", "$$this.name" ] }                }            }        }    }])
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答