Mongodb读取和更新文档,无锁

时间:2018-11-29 16:49:33

标签: database mongodb locking

我有一个结构文件看起来像这样的集合:

{
  "car": 1,
  "user": 1,
  "items": [
    {
      "prop1": "text1",
      "prop2": "text2"
    },
    {
      "prop1": "text1",
      "prop2": "text2"
    }
  ],
  "totalItems": 2,
  "totalDesired": 10,
  "totalMissing": 8
}

前端应用程序每次向后端应用程序发送1个项目。 该请求是这样的:

{
  "car": 1,
  "user": 1,
  "item": {
    "prop1": "text1",
    "prop2": "text2"
  }
}

该集合具有由(汽车,用户)组成的索引。 我需要同一用户的每个请求都递增数组“ items”,因此存储的文档包含用户发送的所有项目和一些汇总数据。 此项目最多可包含10个项目。

在某些情况下,我有很多用户向该API发送请求并因此更新/创建文档。

这是一个聊天系统,在用户向用户发送答案(使用Enter)后,如果该项目正在发送到后端API,则该请求。

我需要在每个答案后发送邮件,因为用户可以在完成所有问题之前离开聊天室。

同一用户没有并发。

我在考虑这种解决方案:

后端API将通过mongodb中的汽车/用户(索引)查询文档,增加项目,汇总并在mongodb中调用更新。 因此,我需要对用户的每个请求执行2个操作,第一个操作用于检索文档,最后一个操作用于更新。

我的问题是:

1-当有许多用户在更新文档时,我可以使用锁吗?甚至汽车/用户都不一样?

2-有没有更好的选择来解决这种情况?

我正在使用mongodb 4.0.4

0 个答案:

没有答案