In my collection on my app, I have a schema of individuals. For each person, I need to find the average of a field (comparatio) for everyone else with the same characteristic, and assign that to a variable in the person's document.
My schema looks like:
const employeeSchema = new mongoose.Schema({
// .... condensed schema for purposes of this question
comparatio: {type: Number},
comparatioPeer: {type: Number},
hourlyRate: {type: Number},
genderPayGap: {type: Number},
peerID: {type: String},
});
Currently I have an async function that looks like:
const allEmployees = await db.Employee.find({})
genderPayPeers = await db.Employee.aggregate([
{$group: {
_id: {
id: '$peerID',
gender: '$gender',
},
avgHourlyRate: {$avg: '$hourlyRate'}
}}
]);
comparatioPeers = await db.Employee.aggregate([
{$group: {
_id: '$peerID',
avgComparatio: {$avg: '$comparatio'}
}}
])
allEmployees.map(employee => {
if (employee.gender == 'M') {
const lookupObject = {
id: employee.peerID,
gender: 'F',
}
let genderPeer = genderPayPeers.find(x => x._id == lookupObject);
} else {
const lookupObject = {
id: employee.peerID,
gender: 'M',
}
let genderPeer = genderPayPeers.find(x => x._id == lookupObject);
}
let comparatioPeer = comparatioPeers.find(x => x._id == employee.peerID);
console.log(genderPeer);
console.log(comparatioPeer);
employee.genderPayGap = (employee.hourlyRate - genderPeer.avgHourlyRate)/genderPeer.avgHourlyRate;
employee.comparatioPeer = comparatioPeer.avgComparatio;
employee.save();
When I run the above, I am getting an error:
ReferenceError: genderPeer is not defined
I feel like I am missing something very obvious.