mongoose和节点JS – 提高发现

我有集合A和集合B.我需要获得所有B(不同的是最好)在A有一个简单elemMatch。 在这种情况下,A是形成,B是过程。 我只需要正在提取的字段,没有别的。

目前我有这个工作:

Formation.find({}, { _id: 0, course: 1 }).elemMatch('trainees', { 'trainee': traineeID }).populate('course', '_id name').exec(function(err, formations) { if(err) return ; console.log(formations); // to fix the array format var courses = formations.map(function(f){ return f.course }); console.log(courses); // to delete repeated values courses = courses.filter((item, index, self) => self.findIndex((i) => { return i._id === item._id; }) === index); console.log(courses) }); 

输出 – 例如:

 First: [ { course: { _id: 582f189764111029a85f77d9, name: 'Outro' } }, { course: { _id: 581b6ff52814533153ed3790, name: 'Microsoft Excel - Bases de Dados' } }, { course: { _id: 581b6ff52814533153ed3790, name: 'Microsoft Excel - Bases de Dados' } } ] Second: [ { _id: 582f189764111029a85f77d9, name: 'Outro' }, { _id: 581b6ff52814533153ed3790, name: 'Microsoft Excel - Bases de Dados' }, { _id: 581b6ff52814533153ed3790, name: 'Microsoft Excel - Bases de Dados' } ] Third: [ { _id: 582f189764111029a85f77d9, name: 'Outro' }, { _id: 581b6ff52814533153ed3790, name: 'Microsoft Excel - Bases de Dados' } ] 

有没有办法可以改善这一点,以消除filter线? 也许地图线呢? 我已经尝试了distinct(),但它不适用于字段select。