sql >> Database teknologi >  >> NoSQL >> MongoDB

Aggregerende efter dato i Mongodb

Jeg var i stand til at ordne det, ifølge @chridams kommentar. Tak igen!

Jeg skriver løsningen nedenfor, for en sikkerheds skyld, hvis nogen nogensinde løber ind i det samme problem, som jeg gjorde.

Jeg ændrede min forespørgsel, så jeg blev:

 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;

Dette gav mig et serialiseret objekt. Så deserialiserede jeg det til den brugerdefinerede klasse, jeg havde:

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

Her er den brugerdefinerede klassedefinition, som vil være en smule poleret op:

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

Jeg håber, at dette vil være nyttigt. Tak! :)




  1. Fjernelse af et element fra array i mongodb

  2. MongoDB forespørger om flere samlinger på én gang

  3. Fejlfinding mongo ikke fundet, og php_mongo.dll er ikke en win32-applikationsfejl

  4. Sådan får du dagen, måneden og året fra en dato i SQL