我有集合A和集合B.我需要获得A中具有简单elemMatch的所有B(最好区别)。在这种情况下,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' } ]
有没有办法可以改善这一点,以便删除过滤线?也许是地图线?我尝试过distinct()但它不适用于字段选择。