假设我有一个对象数组chars: [{'name':'tom','age':2},{'name':'jerry','age':3}]
聚合得到什么chars: ['tom','jerry']
还是chars: 'tom,jerry'
?
我知道我可以chars: [{'name':'tom'},{'name':'jerry'}]
由$project
在chars.name
上,但我想要一个更紧凑的方式来查看我在值中有什么,因为键是无趣的。
您可以使用$reduce
和$concatArrays
:
db.collection.aggregate([
{
$project: {
chars: {
$reduce: {
input: "$chars",
initialValue: [],
in: {
$concatArrays: [
"$$value",
[
"$$this.name"
]
]
}
}
},
_id: 0
}
}
])
操场例子
$reduce
正在迭代数组元素并从中创建一个结果。