Оба приведенных выше ответа - это именно то, что искал вопрос. Это может быть более «хакерский» способ делать что-то.
Сначала создайте функцию, которая генерирует строку запроса '-description.fr -comment.fr ...'
let select = '';
const selectLanguage = (fields, lang) => {
switch (true) {
case lang === 'fr':
fields.forEach(field => {
select= `${select} -${field}.en `;
});
break;
case lang === 'en':
fields.forEach(field => {
select = `${select} -${field}.fr `;
});
break;
default:
break;
}
return select;
}
Это сгенерирует строку типа ' -fieldName1.fr -fieldName2.fr ..'
для engli sh и ' -fieldName1.en ..'
для французского. Затем мы можем использовать этот оператор в запросе выше.
const select = selectLanguage(['description', 'comment', ..], 'en')
await Place.find({}, select) //await Place.find({}, ' -description.fr -comment.fr ..')