mongodb - 使用 C# 驱动程序获取 MongoDb 结果和聚合计数
问题描述
我正在使用聚合进行查询和查找。使用一个服务器调用返回结果和计数的最有效方法是什么?
我已经看到有一种方法可以使用 Facets来做到这一点,但是,我想使用带有类型化类的 Fluent 表达式来做到这一点,这样我就可以将逻辑抽象为通用扩展方法。
我当前的代码如下所示:
collection
.Aggregate ()
.Match (Builders<Order>.Filter...)
.Lookup (...)
.Project<Order> (Builders<Order>.Projection.Exclude ...)
解决方案
我相信您正在寻找$group运营商。
collection
.Aggregate ()
.Match (Builders<Order>.Filter...)
.Lookup (...)
.Project<Order> (Builders<Order>.Projection.Exclude ...)
.Group(x => x.OrderId, g => new { ResultCount = g.Count(), Data = g.Select(x => new Order { SomeOrderProperty = x.AnotherOne}).ToList() }).FirstOrDefault();
这将为您提供一个匿名对象,其中包含您的计数并产生一个。我不知道你的实体看起来如何,所以我假设了一些名字,但你应该能够从中推断出来。