c# - RavenDB - 筛选文档并使用索引/查询获取计数

标签 c# database linq nosql ravendb

我有一份城市文档、站点文档。城市可以有多个站点。站点文档中包含城市信息。 RavenDB中约有100个城市文档和10000个站点文档

市文件:

{
    "CityCode": "NY",

    "CityName": "New York"
}

站点文档:

{
    "SiteName": "MOMA",

    "CityCode": "NY"
}

目标是获取所有城市的列表以及每个城市的站点数量...

City   Sites
NY     12
CH      33
BO      56
and so on....

我正在做这个。

int countSites = session.Query<Site>()
                        .Count();


var SiteCityList = session.Query<Site>()
                          .Take(countSites)
                          .ToList()
                          .GroupBy(x => x.CityCode)
                          .OrderBy(x => x.Count())
                          .ToDictionary(x => x.Key, x => x.Count());

这并没有给出 ravendb 中的所有数据。我在任何时候都只能获得 11 行按站点的计数,甚至计数也不准确。我想要的是获取所有 100 个城市的列表以及每个城市的站点数量(以 100 为单位),如上所示。感谢您的帮助。

最佳答案

使用这样的映射/归约索引

public class CityCodeCount : AbstractIndexCreationTask<Site, CityCodeCount.ReduceResult>
{
    public class ReduceResult
    {
        public string CityCode { get; set; }
        public int Count { get; set; }
    }

    public CityCodeCount()
    {
        Map = sites => from site in sites
                        select new
                        {
                            site.CityCode,
                            Count = 1
                        };

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

    }
}

之后就可以轻松查询了。

var results = documentSession.Query<CityCodeCount.ReduceResult, CityCodeCount>()
    .ToList();

关于c# - RavenDB - 筛选文档并使用索引/查询获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590274/

相关文章:

PHP 注册表单未将凭据插入数据库

c# - 如何定义一个 26x2 数组然后在其行上使用 LINQ?

linq - 在 C# 中从 XML 解析 CData

c# - Lucene.net 无法搜索 ".net"

C# 自动属性

c# - 在 C# 中测试交互式 ICommand

c# - C#/WPF 中相邻形状的并集

php - 在 session 中存储用户数据 - 来自数据库

SQL Server 2005 : Wrapping Tables by Views - Pros and Cons

c# - 如何在其范围之外访问匿名对象的属性?