私は RavenDB にかなり慣れていないため、次の解決策を見つけるのに苦労しています。
次のような ServiceCalls というコレクションがあります。
public class ServiceCall
{
public int ID { get; set; }
public string IncidentNumber { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
public DateTime ReportedDateTime { get; set; }
public string Block { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
}
次のような ServiceCalls/CallsByCategory という名前のインデックスがあります。
Map = docs => from doc in docs
select new
{
Category = doc.Category,
CategoryCount = 1,
ServiceCalls = doc,
};
Reduce = results => from result in results
group result by result.Category into g
select new
{
Category = g.Key,
CategoryCount = g.Count(),
ServiceCalls = g.Select(i => i.ServiceCalls)
};
したがって、出力は次のとおりです。
public class ServiceCallsByCategory
{
public string Category { get; set; }
public int CategoryCount { get; set; }
public IEnumerable<ServiceCall> ServiceCalls { get; set; }
}
このクエリを使用すると、すべてが正常に機能します
var q = from i in session.Query<ServiceCallsByCategory>("ServiceCalls/CallsByCategory") select i
私が絶対に迷っているのは、ReportedDateTime によるクエリを可能にするインデックスを作成することです。これを可能にする何か:
var q = from i in session.Query<ServiceCallsByCategory>("ServiceCalls/CallsByCategory")
where i.ServiceCalls.Any(x=>x.ReportedDateTime >= new DateTime(2012,10,1))
select i
どんなガイダンスでも大歓迎です。