MongoDB .NET Fluent 聚合查询
MongoDB .NET Fluent Aggregate Query
我正在尝试使用 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
我正在尝试使用 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