Монго агрегация исключает пустые поля - PullRequest
0 голосов
/ 13 июня 2019

У меня есть конвейер агрегации, который делает $first для нескольких полей.

Однако в некоторых случаях эти поля отсутствуют. В этих случаях значение поля возвращается как null. Мне нужен способ исключить эти поля.

Я пытался использовать $ifNull на этапе $project, но вместо полей он установил значение полей false.

Групповой этап:

{
  _id: null,
  thisExists: {
    $first: "$thisExists"
  },
  thisDoesNotExist: {
    $first: "$thisDoesNotExist"
  }
}

Результат:

{
    _id:null,
    thisExists:"I exist",
    thisDoesNotExist:null
}

1 Ответ

0 голосов
/ 13 июня 2019

Понял.

На стадии $project, $ifNull должен вернуть "$false" вместо false

{
  thisExists: { $ifNull : ["$thisExists","$false"]},
  thisDoesNotExist : {$ifNull : ["$thisDoesNotExist","$false"]}
}

Это приведет к удалению полей, которые являются нулевыми.

Если бы у кого-то был ответ лучше и проще, было бы здорово.Я бы предпочел не помещать так много полей в $project, хотя это динамически.

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