代码之家  ›  专栏  ›  技术社区  ›  case nelson

nosql文档存储如何处理数组的并发修改?

  •  0
  • case nelson  · 技术社区  · 14 年前

    给出一个简单的json文档,例如:

    { _id: 1234, messages: [...], otherfields: ... }
    

    如果有两个人打开文档,并将一条消息推送到数组中,则第一个更新将被第二个更新所破坏。

    对于数组以外的类型,我可以接受。

    在rdbms中,这不是问题,因为这两条消息只是简单地插入到消息表中,没有问题。类似地,我可以将消息放在一个单独的集合中,但是我觉得我失去了使用文档存储的优势,因为我可以将消息保存在文档的上下文中。

    具体地说,我正在研究mongodb,但是我很欣赏来自couchdb等其他公司的解决方案。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Amala    14 年前

    你要求对MongoDB进行推送操作。嗯,这叫做$push。它将为您处理原子更新。 http://www.mongodb.org/display/DOCS/Updating#Updating-%24push

    甚至可以将数组作为$pushAll传递给它