【问题标题】:Get MongoDb results and count of aggregation using C# driver使用 C# 驱动程序获取 MongoDb 结果和聚合计数
【发布时间】:2019-09-03 01:08:36
【问题描述】:
我正在使用聚合进行查询和查找。使用一个服务器调用同时返回结果和计数的最有效方法是什么?
我已经看到有一种方法可以做到这一点using Facets,但是,我想使用具有类型化类的 Fluent 表达式来做到这一点,这样我就可以将逻辑抽象为通用扩展方法。
我当前的代码如下所示:
collection
.Aggregate ()
.Match (Builders<Order>.Filter...)
.Lookup (...)
.Project<Order> (Builders<Order>.Projection.Exclude ...)
【问题讨论】:
标签:
mongodb
mongodb-.net-driver
mongodb-csharp-2.0
【解决方案1】:
我相信您正在寻找$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();
这将为您提供一个匿名对象,其中包含您的计数并产生一个。我不知道你的实体长什么样,所以我假设了一些名字,但你应该能够从中推断出来。