所有字段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.*"] } } }
]
)

你可以试试,

  • $reduce输入b作为数组,在使用$objectToArray从对象转换到数组之后,这将转换"中的对象;k〃;(键(,";v〃;对象的(值(格式数组
  • $concatArray用于连接$raduceinitialValue($$value(b对象字段的数组$$this.v
db.collection.aggregate([
{
$project: {
b_grouped: {
$reduce: {
input: { $objectToArray: "$b" },
initialValue: [],
in: {
$concatArrays: ["$$this.v", "$$value"]
}
}
}
}
}
])

游乐场

最新更新