Я пытаюсь преобразовать свои документы, как показано ниже. Я пробовал использовать оператор $unwind
, затем оператор $group
в сочетании с оператором $push
, чтобы перестроить массив $user_mentions
, но это также подталкивает все пустые массивы, и я снова вернусь к квадрату.Как сгладить вложенные массивы и удалить пустые массивы только в том случае, если они вложены с использованием структуры агрегации MongoDB?
Что я начинаю с:
{
_id: "6222407",
name: "Chris",
user_mentions: [
[],
[{_id:"963222", name: "Bob"}, {_id:"234324", name: "Fred"}]
]
},
{
_id: "34566",
name: "Tim",
user_mentions: [
[]
]
},
{
_id: "65343",
name: "Sean",
user_mentions: [
[],
[]
]
}
}
Что я хочу:
{
_id: "6222407",
name: "Chris",
user_mentions: [
{_id:"963222", name: "Bob"},
{_id:"234324", name: "Fred"}]
]
},
{
_id: "34566",
name: "Tim",
user_mentions: [
]
},
{
_id: "65343",
name: "Sean",
user_mentions: [
]
}
Это выглядит, как будто это то, что я хочу. :) Я получаю 3.2, чтобы проверить эту вторую функциональность $ unwind. –
Для чтения других: вам понадобится версия MongoDB 3.2. У меня возникли проблемы с тем, что 3.2 был правильно запущен на Ubuntu 14.04, но, к счастью, имел и ПК с ОС Windows. –
Когда вы захотите его на предустановке 3.2 MongoDB, вы можете добавить этап проекта с помощью $ cond для создания пустого массива, если его нет. При необходимости я могу добавить пример ответа. – HoefMeistert