0

我需要一个 cron 作业来过滤所有具有 (travellingPath.endDate>now) 的行并设置它们 (travellingPath.isActive=false)。行进路径具有 toCity 属性。现在我想根据 travellingPath 的数量和另一个设置集合来更新 toCity 的数量。

例如:

  • 行进路径已过期
  • cron 工作抓住了它
  • 从行进路径获取 toCity
  • 从另一个集合中获取转换率
  • 基于toCity.quantitytravellingPath.quantityconversionRaterandom我将 toCity.quantity 更新为新值,我也可能会更改 toCity.owner
  • 将行进路径更新为 isActive=false

我的想法是查询具有 endDate>now 的每条行进路径,但这可能最终得到 100000 个结果,所以它不是很好。我可能会将其限制为 250 个结果才能正常工作。然后对于每个 travellingPath,我得到它的 toCity 并进行计算并更新 toCity 和 travellingPath。

但这似乎效率不高..

你有更好的主意吗?谢谢 (:

4

1 回答 1

1

是的,这就是要走的路。MongoDB 更新不支持依赖于其他字段的表达式。所以你被这个困住了:

  1. 逐一或小批量检索文件;
  2. 计算字段的新值;
  3. 向数据库发送更新(一个一个或一批);
  4. 获取文件的下一部分,重复直到完成。
于 2012-05-06T12:15:25.313 回答