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) }

此索引为您提供每个用户的职位总数。索引中的用户总数是不同用户数。