我有一个打开版本包的数据库。所以文件保存如下: user / 1 / revision / 1,user / 1 / revision / 2等。 但我没想到的是,在搜索中我将拥有相同用户的所有版本或我处理的任何其他文档。 我尝试将此数据库恢复到打开和关闭版本捆绑包的新数据库,我仍然在搜索中拥有所有版本。
我像这样搜索:
session.Query<Entity>().Search(x=>x.Name, query, options: SearchOptions.And, escapeQueryOptions: EscapeQueryOptions.AllowPostfixWildcard)
不确定,也许我应该使用一些特定的参数来处理最新的文档版本?
更新: 到目前为止我做了什么:
从旧数据库导入数据到新数据库
删除了与实体相关的所有索引
我仍然可以在搜索结果中获得所有修订。另外,我的Raven.Server.config没有任何与bundle相关的东西。我的乌鸦版本是2750,似乎是推荐的最新产品版本。
更新2:当我尝试从旧转储将数据导入新数据库时,我收到以下错误:
客户端异常:
/ 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)
任何想法如何解决?
答案 0 :(得分:1)
不应将修订编入索引。只要版本控制包在数据库上处于活动状态且修订文档具有值为Raven-Document-Revision-Status
的元数据键Historical
,所有索引都应忽略它们。
检查该数据库上的数据包是否处于活动状态,并且存在上述元数据。
这适用于2.0,2.5和iirc 1.0。