Mongo是否会自动跟踪每次更新时递增的版本,并可用于乐观锁定?
这与ElasticSearch http://www.elasticsearch.org/blog/elasticsearch-versioning-support/
中描述的功能相对应答案 0 :(得分:0)
不,MongoDB不存储文档版本。就数据库API而言,只有文档的“当前”版本。
如果您想要这样的话,有必要创建自己的方案。您可以在文档中使用version
字段,并使用$inc
根据需要增加该字段,并在应用更新之前验证version
值是否匹配。
示例:
db.myCollection.update(
{ _id: "abc123", _version: 5 },
{
$set: { 'fieldA' : 'some-value' },
$inc: { '_version' : 1 }
}
)
上面的示例将找到包含特定_id
和_version
字段的文档。如果匹配,则将名为fieldA
的字段设置为新值,并将_version
字段增加1
。如果尝试对同一文档和版本进行其他更新,则会因_version
已更新为6
而失败。