我正在尝试使用 MongoDB 的流畅语法编写下面的查询。我正在使用最新的 .NET 驱动程序。我不喜欢用于命名列的字符串,并且希望不必执行 Bson 序列化。
var collection = _mongoDbClient.GetDocumentCollection<JobResult>();
var bsonDocuments = collection.Aggregate()
.Group<BsonDocument>(new BsonDocument{ { "_id", "$RunDateTime" }, { "Count", new BsonDocument("$sum", 1) } })
.Sort(new BsonDocument { { "count", -1 } })
.Limit(20)
.ToList();
foreach (var bsonDocument in bsonDocuments)
{
jobResultRunDateTimes.Add(BsonSerializer.Deserialize<JobResultRunDateTime>(bsonDocument));
}
最佳答案
C# 驱动程序具有针对 mongo 聚合框架的 LINQ 实现,因此您应该能够使用标准 linq 运算符进行查询。
下面的示例显示了分组依据(在假定的属性 Id 上)并计算文档计数,然后进行排序。在下面的示例中,x 的类型为 JobResult
,即获取集合时使用的类型。
var result = collection.AsQueryable().GroupBy(x => x.Id).
Select(g=>new { g.Key, count=g.Count()}).OrderBy(a=>a.Key).Take(1).ToList();
有关详细引用和更多示例,请参阅 C# driver documentation
关于c# - MongoDB .NET 流畅聚合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52527381/