我需要将数组的值与其他一些字段合并。
给出以下数据集:
{
_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']
}
}
]
}
}
我真的不明白为什么这行不通吗?
谢谢
答案 0 :(得分:0)
尝试以下操作:
db.fruits.aggregate([
{
$project: {
values: {
$reduce: {
input: '$collection2',
initialValue: '',
in: {
$concat: ['$$value',' ','$$this']
}
}
},
field1: 1
}
},
{
$project: {
'fruits': { '$concat': [ '$field1', '$values'] }
}
}
])