执行查询后,我可以继续过滤猫鼬数据吗?

时间:2018-08-20 21:15:48

标签: mongoose

我有一个公司的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);
            });
          });
      }
    }

0 个答案:

没有答案