如何根据到期日期更新 mongodb 中的一长串文档(行)



我需要一個cron工作來敗除所有有(travellingPath.endDate>now(的行並設置它們(travellingPath.isActive=false(。行进路径有一个城市属性。现在我想根据 travellingPath 和另一个设置集合的数量来更新 toCity 的数量。

例如:

  • 行驶路径已过期
  • cron 作业捕获它
  • 从旅行路径获取城市
  • 从另一个集合获取转化率
  • 基于toCity.quantity,travellingPath.quantity转化率随机性,我将toCity.quantity更新为新值,我也可能更改toCity.owner
  • 将行进路径更新为 isActive=false

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

但这似乎效率不高。

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

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

  1. 逐个或小批量检索文档;
  2. 计算字段的新值;
  3. 将更新发送到数据库(逐个或批量发送(;
  4. 获取文档的下一部分,重复直到完成。

最新更新