ravendb删除同一文档的多个版本

时间:2013-11-29 10:04:42

标签: ravendb

我有一个打开版本包的数据库。所以文件保存如下:  user / 1 / revision / 1,user / 1 / revision / 2等。 但我没想到的是,在搜索中我将拥有相同用户的所有版本或我处理的任何其他文档。 我尝试将此数据库恢复到打开和关闭版本捆绑包的新数据库,我仍然在搜索中拥有所有版本。

我像这样搜索: session.Query<Entity>().Search(x=>x.Name, query, options: SearchOptions.And, escapeQueryOptions: EscapeQueryOptions.AllowPostfixWildcard)

不确定,也许我应该使用一些特定的参数来处理最新的文档版本?

更新: 到目前为止我做了什么:

  • 重新安装了ravendb并将其安装为服务(这是一项服务,只是确保我没有破坏任何东西)
  • 从旧数据库导入数据到新数据库

  • 删除了与实体相关的所有索引

我仍然可以在搜索结果中获得所有修订。另外,我的Raven.Server.config没有任何与bundle相关的东西。我的乌鸦版本是2750,似乎是推荐的最新产品版本。

更新2:当我尝试从旧转储将数据导入新数据库时,我收到以下错误:

客户端异常:

System.Exception:服务器错误:

/ bulk_docs Raven.Abstractions.Exceptions.OperationVetoedException:PUT被Raven.Bundles.Versioning.Triggers.VersioningPutTrigger否决,原因是:不允许修改历史修订版    在Raven.Database.DocumentDatabase.AssertPutOperationNotVetoed(String key,RavenJObject metadata,RavenJObject document,TransactionInformation transactionInformation)    在Raven.Database.DocumentDatabase。&lt;&gt; c_ DisplayClass4b.b _43(IStorageActionsAccessor actions)    在Raven.Storage.Esent.TransactionalStorage.Batch(Action 1 action) at Raven.Database.DocumentDatabase.Put(String key, Etag etag, RavenJObject document, RavenJObject metadata, TransactionInformation transactionInformation) at Raven.Database.Extensions.CommandExtensions.Execute(ICommandData self, DocumentDatabase database, BatchResult batchResult) at Raven.Database.DocumentDatabase.ProcessBatch(IList 1命令)    在Raven.Database.DocumentDatabase。&lt;&gt; c_ DisplayClass10c.b _108(IStorageActionsAccessor actions)    在Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action 1 action, EsentTransactionContext transactionContext) at Raven.Storage.Esent.TransactionalStorage.Batch(Action 1 action)    在Raven.Database.DocumentDatabase.Batch(IList`1命令)    在Raven.Database.Server.Responders.DocumentBatch.Batch(IHttpContext context)    在Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx)

在Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx)

任何想法如何解决?

1 个答案:

答案 0 :(得分:1)

不应将修订编入索引。只要版本控制包在数据库上处于活动状态且修订文档具有值为Raven-Document-Revision-Status的元数据键Historical,所有索引都应忽略它们。

检查该数据库上的数据包是否处于活动状态,并且存在上述元数据。

这适用于2.0,2.5和iirc 1.0。