kuraga333
@kuraga333
Программист, аналитик

Как отфильтровать массив в каждом элементе массива коллекции MongoDB?

Есть коллекция:

[
  {
    "name": "Alex",
    "cars": [
      {
        "label": "BMW",
        "age": 13,
        "things": [ ... ]
      },
      {
        "label": "Mercedes",
        "age": 8,
        "things": [ ... ]
      }
    ]
  },
  { ... }
]


Надо получить коллекцию без некоторых `thing`'ов, по условию, используя MongoDB aggregations.

Написал код:

db.matches.aggregate([{
  $project: {
    '_id': '$_id',
    'cars': {
      $map: {
        input: '$cars',
        as: 'car',
        in: {
          'things': {
            $filter: {
              input: '$$car.things',
              as: 'thing',
              cond: {
                $lte: [ '$$thing.cost', 10 ]
              }
            }
          }
        }
      }
    }
  }
}
])


Но он требует явного перечисления всех сохраняемых полей, список которых в реальной коллекции варьируется (неизвестен). Как быть?
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
Может Вам поможет $redact?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы