我有一个公司的Mongoose模式,其属性为customers
;这是一个数字(基本上是该公司拥有的客户数量的计数。
想象一下,我们公司集合中有以下数据
| _id | customers |
|-----|-----------|
| A | 12 |
| B | 2 |
| C | 9 |
| D | 4 |
我正在尝试向Company模型添加一个方法,该方法将接受Company _id作为参数,并返回客户数量最接近的前两个公司。我在下面的尝试涉及我获取公司集合中所有companies
(不包括有问题的公司),并让我正在尝试寻找类似公司的公司。然后,我尝试为Company模型中的每个companies
添加一个属性,但是Mongoose似乎为其文档表示增加了很多开销。对于上面的示例数据集,如果输入A的_id
,我期望返回以下内容。
CompanySchema.statics.similarCompanies = (companyId, callback) => {
Company.findOne({_id: companyId })
.exec(error, company) => {
if (error) {
return callback(error);
} else if( !company) {
const err = new Error('Company not found.');
err.status = 401;
return callback(err);
} else {
Company.find({_id: {$ne: companyId }})
.then(results => {
// where I'm stuck
results.forEach(companyToCompare => {
companyToCompare.closeness = Math.abs(companyToCompare.customers - company.customers);
});
});
}
}