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