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

时间:2012-05-06 12:10:56

标签: mongodb

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

例如:

  • 旅行路径已过期
  • cron job抓住它
  • 从旅途中获取城市
  • 从另一个集合中获取conversionRate
  • 基于 toCity.quantity travellingPath.quantity conversionRate random 我更新了toCity。数量为新值,我也可以更改toCity.owner
  • 将行进路径更新为isActive = false

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

但这似乎效率不高......

你有更好的想法吗?谢谢(:

1 个答案:

答案 0 :(得分:1)

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

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