Как отфильтровать нулевые элементы массива из группового значения в агрегированном запросе Монго? - PullRequest
0 голосов
/ 06 сентября 2018

Моя совокупная группа $:

{
    $group: {
        _id: { ["$dayOfYear"]: "$TagDateCreated" },
        disqualified: {
            $addToSet: {
                $cond: {
                    if: { $in: [ "$TagId", [109,220,115,113,238] ]},
                    then: "$ContactId",
                    else: null
                }
            }
        }
    }
}

Что дает мне уникальный набор идентификаторов contactId как дисквалифицированных, но мне нужно удалить нулевые значения. Я попытался опустить выражение else в $ cond и различные фильтры $ в проекте $, которые либо ничего не удаляют, либо удаляют все, либо приводят к ошибке.

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете добавить следующую стадию конвейера после $group:

{
    $addFields: {
        disqualified: {
            $filter: {
                input: "$disqualified",
                as: "d",
                cond: {
                    $ne: [ "$$d", null ]
                }
            }
        }
    }
}

$ addFields перезапишет существующий массив и, используя $ filter , вы можете удалить null value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...