我在RavenDB中有两个集合。请帮我创建从两个集合中获取数据的索引。
public class Ticket
{
public string TicketID{get;set;}
public double Total{get;set;}
}
public class ImportTiming
{
public string Id{get;set;}
public DateTime ExtractTime{get;set;}
}
AND
public class ResultClass
{
public string TicketID{get;set;}
public double Total{get;set;}
public DateTime ExtractTime{get;set;}
}
TicketID(Ticket)& Id(ImportTiming)是相同的。我正在使用LoadDocument for ExtractTime但它显示的是NULL值。
提前致谢!!!
答案 0 :(得分:0)
最后我得到了解决方案...... Bellow是Map-Reduce函数,我在其中使用了LoadDocument<>用于从ImportTiming文档中选择数据。
public class IdxJoinBetweenCollections : AbstractIndexCreationTask<Ticket,JoinBetweenCollections.ResultClass>
{
public IdxJoinBetweenCollections()
{
Map = docs => from doc in docs
let TimeDoc = LoadDocument<ImportTiming>("ImportTiming/" + doc.TicketID)
select new
{
ID = doc.TicketID,
Total = doc.Total,
ExtractTime = TimeDoc.ExtractComplete,
};
Reduce = results => from res in results
group res by res.ID into g
select new
{
ID = g.Key,
Total = g.Select(x => x.Total).FirstOrDefault(),
ExtractTime = g.Select(x => x.ExtractTime).FirstOrDefault(),
};
}
}
在LoadDocument(&#34; ImportTiming /&#34; + doc.TicketID)中,我使用了CollectionName后跟Id,这样我就可以获得整个文档。如果我不使用CollectionName,那么它会显示NULL值。 参考:http://ravendb.net/docs/2.0/client-api/querying/static-indexes/indexing-related-documents