мангуст возвращает объект из массива на основе условия

#node.js #database #mongodb #express #nosql

Вопрос:

Я хочу получить конкретный объект из массива в записи из MongoDB. Я хочу получить всю коллекцию, поэтому я не могу применить свое условие в find, но внутри записи у меня есть массив, который я хочу вернуть объект из этого массива на основе условия.

  await model
  .find({})
  .select("translations")
  .then((data: any) => {
    return res.status(200).json({
      data
    });
  });
 

Теперь здесь у переводов есть много объектов

 [
 {id:'', name: 'EN'},
 {id:'', name: 'AR'}, 
 {id:'', name: 'FR'}
]
 

Как я могу вернуть только перевод, который имеет название «EN»

Ответ №1:

 db.collection.aggregate(
[
  {
    '$project': {
      'translation': {
        '$filter': {
          'input': '$translation', 
          'as': 't', 
          'cond': {
            '$eq': [
              '$t.name', 'EN'
            ]
          }
        }
      }
    }
  }
]   
)