mongodb - MongoDB 所有字段上的 Concat 数组
问题描述
想象一下我有这个系列:
{
id: 1,
b: {
"field1": ['foo'],
"field2": ['bar']
}
}
{
id: 2,
b: {
"field2": ["foobar"],
"field3": ["foofoo"]
}
}
我想用 MongoDB 获得一个新的集合:
{
id: 1,
b_grouped: ['foo', 'bar']
}
{
id: 2,
b_grouped: ["foobar", "foofoo"]
}
我不知道文档中所有字段的名称,任何人都会知道如何执行以下操作:
db.collection.aggregate(
[
{ "$project": { "b_grouped": { $concatArrays: ["$b.*"] } } }
]
)
解决方案
你可以试试,
- 使用$objectToArray
b
从对象转换为数组后,将$reduce输入作为数组,这会将对象转换为“k”(键)、“v”(值)格式的对象数组, - $concatArrays到对象字段$$this.v的concat
initialValue
($$value)$raduce
和数组b
db.collection.aggregate([
{
$project: {
b_grouped: {
$reduce: {
input: { $objectToArray: "$b" },
initialValue: [],
in: {
$concatArrays: ["$$this.v", "$$value"]
}
}
}
}
}
])
推荐阅读
- ansible - postgresql_query ansible 模块不处理命令中的反斜杠
- android - 内容提供者 - 使用
- docker - Travis 不会将 docker 映像推送到集线器
- reactjs - 将个人资料图片从 React 上传到 Django
- pytorch - PyTorch 的迁移学习问题,不同的数据分布范围
- ios - Appstore iOS warning ITMS-90076: Potential Loss of Keychain Access
- r - 取函数和 for 循环中列的平均值
- javascript - 从 json 数据树中获取对象,重用函数的问题
- amazon-web-services - AWS SSM CRON ISSUE - InvalidSchedule:计划表达式 cron(0 11 ? * MON-FRI *) 目前不被接受
- prisma - 太多的 Prisma 迁移文件