您好,我有一个属性,它有一个值(类别)列表,即: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();
1条答案
按热度按时间8hhllhi21#
是的,您的方法产生了预期的结果。LINQ查询相当于$展开和$GROUP聚合管道阶段。只要数据量不是太大,这是一个很好的方法。
如果您遇到性能问题或经常在应用程序的中心部分运行查询,您可以考虑预先准备数字,例如,当类别发生任何更改时或在一段时间之后,而不是重复运行相对昂贵的$组。