我有一个非常简单的代码,可以使用聚合函数检索一些数据。 有一些奇怪的东西,当我运行项目localhost它返回正确的数字但是当我在appharbor上部署它时它总是返回零
这是我的代码的快照
var document = new DocumentStore
{
ConnectionStringName = "RAVENHQ_CONNECTION_STRING"
};
document.Initialize();
var session = document.OpenSession();
int start = 0;
long x = 0, y = 0, z = 0, l = 0;
while (true)
{
var data = session.Query<DailyStat>().Take(1024).Skip(start).ToList();
if (data.Count == 0)
break;
x += data.Sum(x => x.a);
y += data.Sum(x => x.b);
start += data.Count;
z += data.Sum(x => x.c);
l += data.Sum(x => x.d);
}
x /= 1000;
y /= 1000;
model.x = x.ToString();
model.y = y.ToString();
model.z = z.ToString();
model.l = l.ToString();
当我在本地运行项目时,raven总是返回正确的数字但是当我在appharbor上部署项目时,数字显示为零
答案 0 :(得分:1)
由于很多原因,这段代码很糟糕。首先,你不应该做那样的循环。 由于某种原因,RavenDB限制了从服务器获得的项目数量,试图通过循环读取事物来解决这个问题,这只是要求解决问题。 特别是,一旦您的数据大小足够大,您将从RavenDB中获得错误,因为您已通过配额。
然后,您正在加载所有这些值,只是为了获得总和。但这就是为什么我们有一个map / reduce for。