1
我是新來的RavenDB,我想用下面的索引查詢文檔模型。該索引幾乎按照期望工作,除了現在我只需要包含總數中某個日期的最新狀態。例如,客戶可能有多個日期的導入狀態,但只有最後一個狀態應計入結果總數中。RavenDB索引返回最近的條目
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; }
}
可以這樣使用索引來完成?我需要一種不同的方法來解決這個問題嗎?
我看到你要去哪裏,但SelectMany()在添加.Last()後抱怨,因爲lambda不再返回IEnumerable。我將SelectMany()轉換爲Select()並將其編譯,但索引不再產生任何結果。 – Brantino 2013-04-03 22:08:01
我會盡快通過測試代碼進行更新。快速問題 - 你是否在問題中拼錯了名字?你不能有一個名爲'ImportStatus'的類和枚舉。 – 2013-04-03 22:50:22
是的,我做到了。我剛糾正了問題中的代碼。 – Brantino 2013-04-03 23:10:03