Mongoose Query для поиска уникальных ценностей - PullRequest
0 голосов
/ 01 октября 2018

В моем бэкэнде MongoDB я хочу создать конечную точку, которая возвращает все уникальные значения для свойства с именем department.Теперь, если бы я делал это в IntelliShell, я бы просто сделал что-то вроде:

db.staffmembers.distinct( "department" )

Это вернет массив всех значений для department.

Но как вы вернетесьвсе уникальные значения в запросе Mongoose find (), как этот?

Staffmember.find({ name: 'john', age: { $gte: 18 }});

Другими словами, как будет выглядеть синтаксис, если я захочу использовать find(), как указано выше, чтобы вернуть все уникальные значения для department в коллекции "staffmembers"?

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете использовать .aggregate() и передать условие в $match стадию, а затем использовать $addToSet в пределах $group, чтобы получить уникальные значения.

let result = await Staffmember.aggregate([
    { $match: { name: 'john', age: { $gte: 18 }} },
    { $group: { _id: null, departments: { $addToSet: "$department" } } }
]);
...