我有一个文档,其中包含一个名为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"
]
}
如何进行此操作?提前谢谢。
答案 0 :(得分:2)
您只需在$reduce
中添加美元符号即可引用现有数组:
db.myCollection.aggregate(
[
{
$project: {
enabled_domain_2: {
$reduce: {
input: "$enabled_domain",
initialValue: "",
in: {
$concat: [ '$$value', '$$this' ]
}
}
}
}
}
]
)
这就是你所缺少的