我需要一個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 更新不支持依赖于其他字段的表达式。所以你被困住了这个:
- 逐个或小批量检索文档;
- 计算字段的新值;
- 将更新发送到数据库(逐个或批量发送(;
- 获取文档的下一部分,重复直到完成。