Монго агрегат удалить группу, если условие в подмассиве - PullRequest
0 голосов
/ 07 марта 2019

В некоторой точке моего конвейера у меня есть такая структура:

[
    {
        _id: 1,
        elems1: [{sub : {date: xxx}}, {sub: {date: yyy}}],
        elems2: [{sub: {date: zzz}}, {sub: {date: qqq}}]
    },
    ...
]

, которая приходит из группировки:

{$group: {
    _id: '$user.id',
    elems1: {
        $push: {sub: '$other'}
        },
    elems2: {
        $push: {sub: '$other'}
        }
    }
}}

Теперь я хочу удалить группы, которыеесть элемент в elems1 ИЛИ elems2 с sub.date меньше определенной даты, как я могу это сделать?

1 Ответ

1 голос
/ 07 марта 2019

Когда вы делаете $group, вы также можете отслеживать «minElemDate», а затем $match по следующему этапу конвейера.

$group: {
  _id: "$user.id",
  elem1s: ...,
  elem2s: ...
  minElemDate: {
    $min: {
      $cond: [
        { $or: [condition1, condition2] },
       "$user.date",
        null
      ]
    }
  }
},
{ $match: {$gte: ["$minElemDate", minDate]} }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...