sql >> Databáze >  >> NoSQL >> MongoDB

Agregace podle data v Mongodb

Podařilo se mi to opravit, podle komentáře @chridam. Ještě jednou díky!

Níže píšu řešení pro případ, kdyby se někdo někdy setkal se stejným problémem jako já.

Změnil jsem svůj dotaz tak, že jsem se stal:

 var group = collection.Aggregate()
                       .Match(filter)
                       .Group(new BsonDocument { { "_id", new BsonDocument { { "month", new BsonDocument("$month", "$createddate.DateTime") }, { "day", new BsonDocument("$dayOfMonth", "$createddate.DateTime") }, { "year", new BsonDocument("$year", "$createddate.DateTime") } } }, { "count", new BsonDocument("$sum", 1) } })
                       .ToListAsync().Result;

To mi dalo serializovaný objekt. Pak jsem to deserializoval do vlastní třídy, kterou jsem měl:

var grouped = group.Select(g => BsonSerializer.Deserialize<RootObject>(g));

Zde je vlastní definice třídy, která bude trochu upravená:

public class Id
{
    public int month { get; set; }
    public int day { get; set; }
    public int year { get; set; }
}

public class RootObject
{
    public Id _id { get; set; }
    public int count { get; set; }
}

Doufám, že to bude užitečné. Dík! :)




  1. Použijte MongoDB s Laravel 5.3

  2. Mapování soukromého podpůrného pole pomocí MongoDB C#

  3. MongoDb - Změňte typ z Int na Double

  4. MongoDB:Vložení uživatelů do komentářů