RavenDB:从多个集合中索引文档

标签 ravendb

我有几个文档集合,有时需要将它们合并到一个索引中以用于报告目的。

本 FAQ 提供了在 Raven Studio 中编写此类索引的解决方案:http://ravendb.net/faq/indexing-across-entities

虽然我知道我不会得到完整的编译时检查,但我试图避免像这样完全未经检查的代码:

public class Assets_ById : AbstractIndexCreationTask
{
    public override IndexDefinition CreateIndexDefinition()
    {
        return new IndexDefinition
        {
            Map = @"from doc in docs
                    where doc[""@metadata""][""Raven-Entity-Name""] == ""Cars"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Trains"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Boats"" ||
                          doc[""@metadata""][""Raven-Entity-Name""] == ""Planes""
                    select new
                    {
                        Cost = doc.Cost,
                        Id = doc.Id,
                        Name = doc.Name,
                        Type = doc.Type,
                    };"
        }
    }
}

是否有类似于通用的东西 AbstractIndexCreationTask<T>这将允许我使用 lambda 表达式定义异构索引?

最佳答案

您可以使用 WhereEntityIs(names),如下所示:

from doc in docs.WhereEntityIs<Vehicle>("Cars", "Trains", "Boats", "Planes")
select new 
{
  doc.Cost,
  doc.Name,
  doc.Type
}

关于RavenDB:从多个集合中索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148090/

相关文章:

c# - DELETE 后如何等待结果在 RavenDB 中更新

ravendb - 安装 SignalR 和 Raven 的 NuGet 问题

c# - 使用 RavenDB 在子集合上进行 OrderBy

c# - 如何使用VS2012在对象被释放时进行调试?

nosql - NoSql (RavenDB) 的多对多设计

c# - 选择数据库结构/引擎的指南

RavenDB 复制问题

azure - 调试 Azure WebApp 中的 TCP/IP 端口耗尽

ravendb - URL 作为 RavenDB 中的键

RavenDB 和应用程序启动时的过时索引