0

我在 MongoDB (ErrorTypeOccurences) 中有一个文档类型,它只有一个 Name 和 Count 属性。每次记录异常时,我都会增加/减少 Count 属性(以便能够报告应用程序错误类型)。为了进行更新,我发现了如何使用 $inc 修饰符进行 upsert,这很棒,但我正在努力寻找一种干净的方法来执行减量操作,如果减量值等于,该操作也将删除文档零(因为不再存在该类型的错误日志)。

我显然可以执行递减操作,然后删除所有计数为零的错误文档,但我希望完全在服务器上以原子操作执行此操作。findAndModify 看起来很有希望,但我不知道如何进行递减更新,然后如果它的递减计数现在等于零,则有条件地删除记录。

我可以通过标准操作来实现这一点,还是需要编写服务器端函数?

我正在使用 C#/NoRM,所以使用它的示例会很棒,但根本不需要。谢谢。

4

2 回答 2

1

您必须执行两个操作。而且由于 MongoDB 内部没有事务支持,因此您不能保证操作通常会成功。必须添加对应用程序级别的额外检查。

于 2011-03-29T03:43:35.063 回答
0

据我所知,你不能开箱即用地做你要求的事情。您确实希望执行两次更新。这是服务器端功能可能适用的东西。您可以像存储过程一样存储 Javascript 函数。

于 2011-03-29T01:08:07.963 回答