ravendb 索引的问题

Problems with ravendb indexes

嗨,我在使用 ravendb 索引时遇到了一些问题。

让我用代码解释一下我想做什么。

我有这两个 类:

class John
{
    public string Name { get; set; }
    public IList<int> Cats { get; set; }
}

class John2
{
    public string Name { get; set; }
    public int Cat { get; set; }
}

它们各自代表ravendb中的一种文档类型。

我想创建一个索引。该索引应该给我尽可能多的 John2 对象,因为 John 类型的对象的 Cats 列表中有条目。

所以假设我有这个:

var john = new John
{
   Name = "test",
   Cats = new List<int> { 12,13}
};

然后我想要一个索引来执行以下操作:

var res = john.Cats.Select(x => new John2 {Name = "john", Cat = x});

变量 res 将包含 2 个 John2 类型的条目,每个条目都有自己的 Cat。 John2 条目的数量将取决于对象 John 的 Cats 列表中的 Cats 数量。

首先,我对 ravendb 和索引完全陌生。所以我什至不知道这样的事情是否可能。

有人对如何使用 raven 索引实现上述功能有建议吗?

如果您想要数据的投影,您可以使用 Transformers

public class John2Transformer : AbstractTransformerCreationTask<John>
{
      public John2Transformer ()
      {
          TransformResults = johns => from john in johns
                                      from cat in john.Cats
                                      select new
                                      {
                                          Name = john.Name,
                                          Cat = cat
                                      };
      }
}

查询:

IList<John2> res = session.Query<John>()
      .TransformWith<John2Transformer, John2>()
      .ToList();