首页 > 解决方案 > 使用 C# 驱动程序获取 MongoDb 结果和聚合计数

问题描述

我正在使用聚合进行查询和查找。使用一个服务器调用返回结果和计数的最有效方法是什么?

我已经看到有一种方法可以使用 Facets来做到这一点,但是,我想使用带有类型化类的 Fluent 表达式来做到这一点,这样我就可以将逻辑抽象为通用扩展方法。

我当前的代码如下所示:

collection
  .Aggregate ()
  .Match (Builders<Order>.Filter...)
  .Lookup (...)
  .Project<Order> (Builders<Order>.Projection.Exclude ...)

标签: mongodbmongodb-.net-drivermongodb-csharp-2.0

解决方案


我相信您正在寻找$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();

这将为您提供一个匿名对象,其中包含您的计数并产生一个。我不知道你的实体看起来如何,所以我假设了一些名字,但你应该能够从中推断出来。


推荐阅读