Я хочу объединить вложенные массивы, используя $ lower и $ setUnion в MongoDB.Ниже приведен пример ввода -
levels: [
[[80,100,120]],[[100,150]],[[200,80,100]],[[80,100]]
]
Вывод, который я собирался получить (т.е. объединить вложенные массивы с уникальными значениями) - уровни: [80,100,120,150,100]
Я могу получитьвывод выше с использованием двух способов -
1) Использование двух этапов $ project в конвейере -
aggregate([
$project: { levels : { $reduce: {
input: "$levels", initialValue: [], in:{$setUnion:["$$value","$$this"]}}}},
$project: { levels : { $reduce: {
input: "$levels", initialValue: [], in:{$setUnion:["$$value","$$this"]}}}}
])
2) Сначала $ unwind, а затем $ project
aggregate([
$unwind: { '$levels'}},
$project: { levels : { $reduce: {
input: "$levels", initialValue: [], in:{$setUnion:["$$value","$$this"]}}}}
])
CanЕсть ли какой-нибудь улучшенный способ первого варианта, когда мне не нужно использовать один и тот же проект $ дважды?Я пытаюсь избежать раскручивания.