gpt4 book ai didi

ravendb - 使用 RavenDB 映射/减少分片数据

转载 作者:行者123 更新时间:2023-12-01 06:42:45 26 4
gpt4 key购买 nike

当数据跨两个节点分片时,我无法让 map reduce 样本工作。我正在存储与在两个本地 ravenDB 节点上记录的应用程序错误相关的文档,错误文档如下所示:

节点 1 上的文档示例,共有 6 个

errors/1/6
{
"UniqueId": "c62c7e30-8ec7-45af-88e4-da023d796727",
"ApplicationName": "MyAppName"
}

节点 2 上的文档示例,共有 7 个
errors/2/6  --Error stored on shard node 2
{
"UniqueId": "7e0b0f87-9d75-4e70-9fa0-d64a18bc88dc",
"ApplicationName": "MyAppName"
}

当我运行此查询时:
public class ApplicationNames : AbstractIndexCreationTask<ErrorDocument, Application>
{
public ApplicationNames()
{
Map = errors => from error in errors
select new { error.ApplicationName, Count = 1 };

Reduce = results => from error in results
group error by new { error.ApplicationName, error.Count } into g
select new { g.Key.ApplicationName, Count = g.Sum(x=> x.Count) };
}
}

我得到了 2 个结果;第一个计数为 6,第二个计数为 7。我希望每个分片的两个结果将合并为一个计数为 13 的结果。不确定我是否做错了什么或者不是它应该如何工作。我遵循了 http://ravendb.net/documentation/docs-sharding 的示例设置分片策略。

最佳答案

授予,
RavenDB 目前不处理减少多个节点。
您可以自己使用:

session.Query<Application, ApplicationNames>()
.ToList()
.Select(new ApplicationNames().Reduce)
.ToList();

关于ravendb - 使用 RavenDB 映射/减少分片数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com