首页 文章

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

提问于
浏览
0

我有一个打开版本包的数据库 . 因此文档保存如下: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)在Raven.Database.DocumentDatabase . 的Raven.Database.DocumentDatabase . <> c_DisplayClass4b.b_43(IStorageActionsAccessor actions)中的事务处理(事件 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命令) . <> c_DisplayClass10c.b_108(IStorageActionsAccessor actions)在Raven.Database的Raven.Database.Server.Responders.DocumentBatch.Batch(IHttpContext context)的Raven.Database.DocumentDatabase.Batch(IList1命令)中的Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action1 action, EsentTransactionContext transactionContext) at Raven.Storage.Esent.TransactionalStorage.Batch(Action` 1 action) .Server.HttpServer.DispatchRequest(IHttpContext ctx)

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

任何想法如何解决它?

1 回答

  • 1

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

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

    这适用于2.0,2.5和iirc 1.0 .

相关问题