我有一个非常简单的代码,可以使用聚合函数检索一些数据。有些奇怪的是,当我运行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上部署项目时,数字显示为零。
发布于 2014-04-16 02:21:49
这段代码很糟糕,原因有很多。首先,你不应该做这样的循环。RavenDB限制你从服务器获取的项目数量是有原因的,试图通过在循环中读取东西来解决这个问题只会导致问题。特别是,一旦你的数据足够大,你就会收到来自RavenDB的错误,因为你已经超过了你的配额。
然后,加载所有这些值,以获得总和。但这就是为什么我们有一个map/reduce for。
https://stackoverflow.com/questions/23080419
复制相似问题