Ass*_*vie 8 transactions mongodb
我意识到MongoDB是一个NoSQL解决方案,但我想知道它是否有某种等同于序列化级别的事务隔离级别.
如果没有,您将如何解决MongoDB中的丢失更新问题?
我想保留Mongo中某些数据的修订历史记录,每个修订版都必须指向它之前的版本.如何确保我的数据不超过一个最新修订版,另一方面,由于并发更新,没有修订版丢失?
**编辑**
哎呀,RTFM,确实可能:http://www.mongodb.org/display/DOCS/Atomic+Operations
不知道我是否应该关闭这个问题,因为这些知识可能与其他人有关.
是的,这是可能的,只要您将历史记录保存在单个文档中即可.MongoDB支持文档范围内的原子更新,但不支持集合中的多个文档.
因此,您可以使用如下的模式将历史记录嵌入到数组中:
{
_id: 12345,
value: "Apple",
history:
[
{ revisionid: 2, value: "Orange" },
{ revisionid: 1, value: "Pear" }
]
}
Run Code Online (Sandbox Code Playgroud)
例如,您可以插入新文档:
db.things.insert( { _id: 123, value: "Apple" } )
Run Code Online (Sandbox Code Playgroud)
然后在一个原子操作中更新它:
db.things.update( { _id: 123 },
{
$set: { value: "Orange" },
$push : { history : { revisionid: 1, value: "Apple" } }
}
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1830 次 |
最近记录: |