MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aggregieren nach Datum in Mongodb

Laut dem Kommentar von @chridam konnte ich es beheben. Nochmals vielen Dank!

Ich schreibe die Lösung unten, nur für den Fall, falls jemand jemals auf das gleiche Problem stößt wie ich.

Ich habe meine Abfrage so geändert, dass ich wurde:

 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;

Dies gab mir ein serialisiertes Objekt. Dann deserialisierte ich es in die benutzerdefinierte Klasse, die ich hatte:

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

Hier ist die benutzerdefinierte Klassendefinition, die etwas aufpoliert wird:

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; }
}

Ich hoffe, das wird nützlich sein. Vielen Dank! :)