C#IMongoCollection对每个不同的值进行计数

00jrzges  于 2022-10-04  发布在  C#
关注(0)|答案(1)|浏览(132)

您好,我有一个属性,它有一个值(类别)列表,即:doc1.ategories=[体育、影院等]doc2.ategories=[游戏、体育等]

我想要一个返回如下内容的IMongoCollection函数:体育:2影院:1游戏:1等等

编辑:

我找到了这个,这是个好答案吗?

_collection.AsQueryable()
.SelectMany(s => s.Categories)
.GroupBy(s => s)
.Select(g => new { Category = g.Key, Total = g.Count() })
.ToList();
8hhllhi2

8hhllhi21#

是的,您的方法产生了预期的结果。LINQ查询相当于$展开和$GROUP聚合管道阶段。只要数据量不是太大,这是一个很好的方法。

如果您遇到性能问题或经常在应用程序的中心部分运行查询,您可以考虑预先准备数字,例如,当类别发生任何更改时或在一段时间之后,而不是重复运行相对昂贵的$组。

相关问题