NRediSearch - 获取匹配的文档总数
NRediSearch - Getting total documents matched count
有没有办法在调用 Aggregate
函数时获得总结果数?
请注意,我没有使用 Aggregate
函数来汇总结果,而是作为高级搜索查询,因为 Search
函数不允许按多个字段排序。
RediSearch returns 匹配的文档总数,但我找不到使用 NRediSearch 库获取此数字的方法。
使用 NRediSearch
使用 NRediSearch,您需要构建并执行聚合,这将 运行 一个 GROUPBY 0 和 COUNT reducer,假设您有一个 person-idx
索引并且您想要计算所有 Person
Redis 中的文档:
var client = new Client("person-idx", muxer.GetDatabase());
var result = await client.AggregateAsync(new AggregationBuilder().GroupBy(new List<string>(), new List<Reducer>{Reducers.Count()}));
Console.WriteLine(result.GetResults().First().Values.First());
会得到您想要的计数。
与Redis.OM
有一个较新的库 Redis.OM,您也可以使用它来使这些聚合更简单一些,可以使用以下方法完成相同的操作:
var peopleAggregations = provider.AggregationSet<Person>();
Console.WriteLine(peopleAggregations.Count());
有没有办法在调用 Aggregate
函数时获得总结果数?
请注意,我没有使用 Aggregate
函数来汇总结果,而是作为高级搜索查询,因为 Search
函数不允许按多个字段排序。
RediSearch returns 匹配的文档总数,但我找不到使用 NRediSearch 库获取此数字的方法。
使用 NRediSearch
使用 NRediSearch,您需要构建并执行聚合,这将 运行 一个 GROUPBY 0 和 COUNT reducer,假设您有一个 person-idx
索引并且您想要计算所有 Person
Redis 中的文档:
var client = new Client("person-idx", muxer.GetDatabase());
var result = await client.AggregateAsync(new AggregationBuilder().GroupBy(new List<string>(), new List<Reducer>{Reducers.Count()}));
Console.WriteLine(result.GetResults().First().Values.First());
会得到您想要的计数。
与Redis.OM
有一个较新的库 Redis.OM,您也可以使用它来使这些聚合更简单一些,可以使用以下方法完成相同的操作:
var peopleAggregations = provider.AggregationSet<Person>();
Console.WriteLine(peopleAggregations.Count());