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

时间:2010-09-10 14:43:45

标签: arrays mongodb concurrency nosql

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

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

如果两个人打开文档,并将消息推送到阵列上,则第一个更新将被第二个更新。

对于阵列以外的类型,我对此很好。

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

是否有解决方案在商店中指定推送操作,以便我不必破坏数组?

具体来说,我正在看mongodb,但我很欣赏来自其他人的解决方案,比如couchdb。

1 个答案:

答案 0 :(得分:2)

您要求MongoDB进行推送操作。好吧,它被称为$ push。它将为您处理原子更新。 http://www.mongodb.org/display/DOCS/Updating#Updating-%24push

甚至可以将数组作为$ pushAll

传递给它