Mongo是否对对象进行了版本控制(如ElasticSearch)

时间:2014-02-26 21:40:42

标签: mongodb locking versioning

Mongo是否会自动跟踪每次更新时递增的版本,并可用于乐观锁定?

这与ElasticSearch http://www.elasticsearch.org/blog/elasticsearch-versioning-support/

中描述的功能相对应

1 个答案:

答案 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而失败。