Я пытаюсь использовать отличную функцию mon goose для коллекции с динамическим c условным выражением для возвращаемых значений. Когда я использую его в «обычном» поле, оно работает нормально, но когда я пытаюсь использовать его во вложенном поле, оно не работает и каждый раз выдает разные результаты.
для следующего примера он возвращает меня все документы, существующие в 'work.company'
мой запрос на доход:
{ query: 'e',
usedIds: '', // string separated by commas where each 'word' represent a value that shouldn't return again
searchFields: 'work.company' // it works for searchFields: 'name'
}
моя попытка вернуть требуемые документы
const regex = new RegExp('^' + req.query.query + '.*');
const query = [];
searchFields.split(",").forEach(field => {
field = field.trim();
if (field) {
query.push({ [field]: { $regex : regex } });
}
});
let field = Object.keys(query[0])[0];
const distinctQuery = {
[field]: { $nin: usedIds },
$or: query
};
employees = await Employee.distinct(field, distinctQuery);