我在MongoDB中有一个文档类型(ErrorTypeOccurences),它只有一个Name和Count属性。每次记录异常时,我都会递增/递减Count属性(以便能够报告应用程序错误类型)。为了做更新,我发现了如何使用$ inc修饰符进行upsert,这很好,但是我正在努力找出一种简洁的方法来执行递减操作,如果递减的值等于也会删除文档为零(因为不再存在该类型的错误日志)。
我显然可以执行递减操作,然后删除Count为零的任何错误文档,但我很乐意在完全在服务器上的原子操作中执行此操作。 findAndModifiy看起来很有希望,但是我看不出如何进行减量更新然后有条件地删除记录,如果它的递减计数现在等于零。
我可以通过标准操作实现这一点,还是需要编写服务器端函数?
我正在使用C#/ NoRM,因此使用它的示例会非常棒,但根本不需要。感谢。
答案 0 :(得分:1)
您必须执行两项操作。由于MongoDB中没有事务支持,因此无法保证操作一般会成功。必须添加对应用程序级别的附加检查。
答案 1 :(得分:0)
据我所知,你无法做出你想要开箱即用的东西。您真的希望执行两个更新。这是服务器端功能可以工作的东西。您可以像存储过程一样存储Javascript函数。