我对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和索引完全陌生。所以我甚至不知道这样的事情是否可能。
是否有人就如何使用乌鸦索引实现上述功能提出建议?
答案 0 :(得分:2)
如果您想要投放数据,可以使用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();