У меня есть коллекция данных MongoDB, который выглядит следующим образом:Как объединить два массива полей во многих документах в один набор?
{ "_id" : "1", "array1" : [ "1", "2" ] },
{ "_id" : "2", "array2" : [ "1", "3" ] },
{ "_id" : "3", "array1" : [ ] },
{ "_id" : "4", "array2" : [ ] },
{ "_id" : "5" },
{ "_id" : "6", "array1" : [ "3", "4" ], "array2" : [ "5" ] }
Я хотел бы найти запрос, который просто возвращает уникальные значения массива в одном массиве, как так:
{"_id":"theID", "result":["1", "2", "3", "4", "5"]}
id не имеет значения. Обратите внимание, что либо array1
, array2
, либо оба они могут присутствовать в документе и что они могут даже быть пустыми. Я пробовал много агрегаций и каскадных команд запроса и просто не могу найти желаемого ответа.
Это не так просто, как я думал, что это будет. Моя идея состояла в том, чтобы сначала скрутить оба массива в один, используя '$ setUnion', затем' $ unwind' результирующий массив, а затем '$ group' с помощью' $ addToSet', но, к сожалению, '$ setUnion' не работает, если оба поля содержатся в документе. – Philipp