C# RavenDB查询映射/减少索引中的聚合属性
我有一个map/reduce索引,看起来像这样(在服务器上定义的) 地图: 减少:C# RavenDB查询映射/减少索引中的聚合属性,c#,.net,nosql,ravendb,document-database,C#,.net,Nosql,Ravendb,Document Database,我有一个map/reduce索引,看起来像这样(在服务器上定义的) 地图: 减少: from result in results group result by new { result.Year, result.Month, result.Day, result.Hour, result.Minute } into g select new { DocumentID = Guid.NewGuid(), Year = g.Key.Year,
from result in results
group result by new { result.Year, result.Month, result.Day, result.Hour, result.Minute }
into g
select new
{
DocumentID = Guid.NewGuid(),
Year = g.Key.Year,
Month = g.Key.Month,
Day = g.Key.Day,
Hour = g.Key.Hour,
Minute = g.Key.Minute,
RequestBytes = g.Sum(r => r.RequestBytes),
ResponseBytes = g.Sum(r => r.ResponseBytes),
TotalRequests = g.Sum(r => r.TotalRequests)
}
我试图查询map/reduce索引的结果,如下所示:
session.Query<UsageAggregate>("RequestAggregateByMinute", true)
.Where(a => a.TotalRequests >= 1);
session.Query(“RequestAggregateByMinute”,true)
其中(a=>a.TotalRequests>=1);
但是,当有许多结果(如studio中所示)的TotalRequests属性大于1时,我没有得到任何结果。当我不包含where谓词时,我会得到结果;当我对聚合属性(RequestBytes、ResponseBytes和TotalRequests)以外的任何其他属性进行筛选时,我也会得到结果
有人能帮我理解我做错了什么吗?好的,我知道了。不管出于什么原因,我需要像这样转换Sum()的结果。一旦动态编译被发送到raven服务器,这一定与动态编译有关
from result in results
group result by new { result.Year, result.Month, result.Day, result.Hour, result.Minute }
into g
select new
{
DocumentID = Guid.NewGuid(),
Year = g.Key.Year,
Month = g.Key.Month,
Day = g.Key.Day,
Hour = g.Key.Hour,
Minute = g.Key.Minute,
RequestBytes = (Int32)g.Sum(r => r.RequestBytes),
ResponseBytes = (Int32)g.Sum(r => r.ResponseBytes),
TotalRequests = (Int32)g.Sum(r => r.TotalRequests)
}
再多了解一点。似乎我无法对聚合字段执行范围查询(例如,大于不起作用,等于起作用)。
from result in results
group result by new { result.Year, result.Month, result.Day, result.Hour, result.Minute }
into g
select new
{
DocumentID = Guid.NewGuid(),
Year = g.Key.Year,
Month = g.Key.Month,
Day = g.Key.Day,
Hour = g.Key.Hour,
Minute = g.Key.Minute,
RequestBytes = (Int32)g.Sum(r => r.RequestBytes),
ResponseBytes = (Int32)g.Sum(r => r.ResponseBytes),
TotalRequests = (Int32)g.Sum(r => r.TotalRequests)
}