如何将所有文档从一个 RavenDB 数据库移动到另一个?

问题描述

我最初使用单独的数据库进行开发 - 一个用于数据,另一个用于配置,但我的查询现在需要“连接”两个数据库中的数据。作为迁移过程的一部分,如何使用 C# API 合并这 2 个数据库?

解决方法

这可以使用 Raven.Client.Documents.Smuggler.DataSmuggler 类来完成:

using System.Threading.Tasks;
using Raven.Client.Documents;
using Raven.Client.ServerWide.Operations;

public class RavenDBMerger
{
  readonly IDocumentStore _store;

  public RavenDBMerger(IDocumentStore store)
  {
    _store = store;
  }

  public async Task MergeDatabases()
  {
    string sourceDbName = "source-database";

    var sourceDb = _store.Maintenance.Server.Send(new GetDatabaseRecordOperation(sourceDbName));

    if (sourceDb != null)
    {
      var smugglerFrom = _store.Smuggler.ForDatabase(sourceDbName);

      var smugglerTo = _store.Smuggler.ForDatabase("target-database");

      await smugglerFrom.ExportAsync(new Raven.Client.Documents.Smuggler.DatabaseSmugglerExportOptions(),smugglerTo);

      _store.Maintenance.Server.Send(new DeleteDatabasesOperation(sourceDbName,hardDelete: true));
    }
  }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...