gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:47 24 4
gpt4 key购买 nike

我有一个城市文档,站点文档。城市可以有多个站点。站点文档中包含城市信息。 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 为单位)作为列表,如上所示。感谢您的帮助。

最佳答案

像这样使用 map/reduce 索引

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/

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