#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'
]
}
}
}
}
}
]
)