ravendb索引的问题



嗨,我在使用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中的一个文档类型。

我想创建一个索引。这个索引应该为我提供与John类型对象的Cats列表中的条目一样多的John2对象。

假设我有这个:

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将包含两个类型为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();

最新更新