MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregando por data no Mongodb


Consegui consertar, de acordo com o comentário de @chridam. Obrigado novamente!

Estou escrevendo a solução abaixo, apenas no caso, se alguém se deparar com o mesmo problema que eu.

Eu mudei minha consulta para que eu me tornasse:
 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;

Isso me deu um objeto serializado. Então eu desserializei na classe personalizada que eu tinha:
var grouped = group.Select(g => BsonSerializer.Deserialize<RootObject>(g));

Aqui está a definição de classe personalizada que será um pouco aprimorada:
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; }
}

Espero que isso seja útil. Obrigado! :)