从包含某个键值对的对象数组中获取值数组



假设我有一个对象数组chars: [{'name':'tom','age':2},{'name':'jerry','age':3}]

聚合得到什么chars: ['tom','jerry']还是chars: 'tom,jerry'?

我知道我可以chars: [{'name':'tom'},{'name':'jerry'}]$projectchars.name上,但我想要一个更紧凑的方式来查看我在值中有什么,因为键是无趣的。

您可以使用$reduce$concatArrays:

db.collection.aggregate([
{
$project: {
chars: {
$reduce: {
input: "$chars",
initialValue: [],
in: {
$concatArrays: [
"$$value",
[
"$$this.name"
]
]
}
}
},
_id: 0
}
}
])

操场例子

$reduce正在迭代数组元素并从中创建一个结果。

最新更新