私は RavenDB を初めて使用し、以下のインデックスを使用して以下のドキュメント モデルをクエリしようとしています。インデックスはほぼ希望どおりに機能していますが、現在は、日付の最新のステータスのみを合計に含める必要があります。たとえば、クライアントは 1 つの日付に対して複数のインポート ステータスを持つことができますが、結果の合計では最後のステータスのみをカウントする必要があります。
public class Client
{
public int Id { get; set; }
public string Name { get; set; }
public IList<ImportStatusMessage> ImportStatuses { get; set; }
}
public class ImportStatusMessage
{
public DateTime TimeStamp { get; set; }
public ImportStatus Status { get; set; }
}
public enum ImportStatus
{
Complete,
Running,
Failed,
Waiting,
NoReport
}
次のインデックスを使用しています。
public class Client_ImportSummaryByDate : AbstractIndexCreationTask<Client, ImportSummary>
{
public Client_ImportSummaryByDate()
{
Map = clients => from client in clients
from status in client.ImportStatuses
select new
{
status.Status,
Date = status.TimeStamp.Date,
Count = 1
};
Reduce = results => from result in results
group result by new { result.Status, result.Date }
into g
select new
{
g.Key.Status,
g.Key.Date,
Count = g.Sum(x => x.Count)
};
}
}
public class ImportSummary
{
public ImportStatus Status { get; set; }
public DateTime Date { get; set; }
public int Count { get; set; }
}
これはインデックスで実現できますか? この問題を解決するには別のアプローチが必要ですか?