使用不同的更新和插入条件升级到mongodb

时间:2016-01-11 21:56:04

标签: c# mongodb

我有一组文件,其中每个文件都包含一个计数器,如下所示:

{_id: 'a', CurrentCount: 0 }

我想:

  1. 如果具有给定Id的文档不存在,请创建它并将CurrentCount设置为0,否则转到2
  2. 仅当CurrentCount等于给定值时才增加CurrentCount。如果CurrentCount值不等于给定值,请不要更新文档
  3. 目前,我执行FindOneAndUpdate,其中包含有关CurrentCount的id和期望值的过滤器,以及一个使CurrentCount递增的Update语句。如果文档存在但CurrentCount不等于期望值,则_id上的唯一索引将导致upsert抛出异常,我将其捕获并归属于不正确的计数器。

    我正在寻找一种方法来做到这一点是对数据库的单一查询,而不必依赖异常。

    有没有办法构建一个只基于Id进行upsert的查询,只有当CurrentCount等于期望值时才更新,并返回文档的(可能)更改版本?

    我正在使用带有C#驱动程序的Mongo 3.x

0 个答案:

没有答案