RavenDB:索引来自多个集合的文档

Ric*_*ole 6 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,
                    };"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有类似于泛型的东西AbstractIndexCreationTask<T>允许我用lambda表达式定义异构索引?

Aye*_*ien 5

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

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


Dan*_*ang 4

看看这里:https://groups.google.com/forum/#! topic/ravendb/9wvRY0OiGBs

这基本上是同一个问题,简短的答案是:

“目前没有更好的选择,但将来会有更好的选择”