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

3

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

1个回答

3
这可以使用 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));
    }
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接