MongoDB .NET Fluent Aggregate Query - PullRequest
       12

MongoDB .NET Fluent Aggregate Query

0 голосов
/ 27 сентября 2018

Я пытаюсь написать запрос ниже, используя свободный синтаксис 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));
}

1 Ответ

0 голосов
/ 27 сентября 2018

Драйвер C # имеет реализацию LINQ, нацеленную на структуру агрегации mongo, поэтому вы должны иметь возможность выполнять ваш запрос, используя стандартные операторы 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 #

...