RavenDB map/reduce 两层深度嵌套关系文档的索引
RavenDB map/reduce index for two levels deep nested relationship documents
我有结构如下的工作文档。这些工作文档可能具有相同的工作人员。我正在尝试创建一个 map/reduce 索引来计算工作列表中唯一机组成员的总数,但我一直在获取总数而不是唯一身份总数。
这是我试过的 map/reduce 索引,它返回总计数而不是唯一计数。
Map = jobs => from job in jobs
from crew in job.Crews
from member in crew.Members
select new { UserID = member.UserName, Count = 1 }
Reduce = results => from result in results.Distinct()
group result by 0 into g
select new { UserID = "", g.Sum(x => x.Count) }
{
"Name": "Planetary Laser",
"Crews": [
{
"Name": "Laser Team 1",
"Members": [
{
"UserName": "vader@empire.com",
},
{
"UserName": "uno@empire.com",
},
{
"UserName": "dos@empire.com",
},
],
},
{
"Name": "Laser Team 2",
"Members": [
{
"UserName": "emporer@empire.com",
},
{
"UserName": "bfett@empire.com",
},
{
"UserName": "dos@empire.com",
}
],
}
],
}
你需要这样做:
Map = jobs => from job in jobs
from crew in job.Crews
from member in crew.Members
select new { UserID = member.UserName, Count = 1 }
Reduce = results => from result in results
group result result by result.UserId into g
select new { UserID = g.Key, g.Sum(x => x.Count) }
此索引为您提供每个用户的职位总数。索引中的用户总数是不同用户数。
我有结构如下的工作文档。这些工作文档可能具有相同的工作人员。我正在尝试创建一个 map/reduce 索引来计算工作列表中唯一机组成员的总数,但我一直在获取总数而不是唯一身份总数。
这是我试过的 map/reduce 索引,它返回总计数而不是唯一计数。
Map = jobs => from job in jobs
from crew in job.Crews
from member in crew.Members
select new { UserID = member.UserName, Count = 1 }
Reduce = results => from result in results.Distinct()
group result by 0 into g
select new { UserID = "", g.Sum(x => x.Count) }
{
"Name": "Planetary Laser",
"Crews": [
{
"Name": "Laser Team 1",
"Members": [
{
"UserName": "vader@empire.com",
},
{
"UserName": "uno@empire.com",
},
{
"UserName": "dos@empire.com",
},
],
},
{
"Name": "Laser Team 2",
"Members": [
{
"UserName": "emporer@empire.com",
},
{
"UserName": "bfett@empire.com",
},
{
"UserName": "dos@empire.com",
}
],
}
],
}
你需要这样做:
Map = jobs => from job in jobs
from crew in job.Crews
from member in crew.Members
select new { UserID = member.UserName, Count = 1 }
Reduce = results => from result in results
group result result by result.UserId into g
select new { UserID = g.Key, g.Sum(x => x.Count) }
此索引为您提供每个用户的职位总数。索引中的用户总数是不同用户数。