我有一个包含多个字段的mongo文档 -
User: { paid_visits: 10, free_visits: 10, totalLength: 120, avgRevenue: 4.4 }
我自动更新访问次数和总长度,但为了计算avgRevenue,我需要根据totalLength,paid_visits和free_visits进行计算。
目前我需要获取用户,计算avgRevenue,然后更新它。
我想要做的是每次更新任何其他字段时更新avgRevenue。我怎样才能做到这一点?
答案 0 :(得分:0)
MongoDB没有任何服务器端支持触发器,但无论这个要求似乎都是您可以在应用程序模型中最好地处理的,因为它仅限于特定的文档类型。
如果您使用框架/ ODM,他们通常会根据请求生命周期中的各种触发点来支持或挂钩。
例如,Mongoid ODM for Ruby有许多有用的callbacks,允许您在适当的位置调用应用程序逻辑,例如文档的before_save
。您的回调可以检查是否有任何相关字段已更改,并且只在需要时才进行avgRevenue
重新计算。