sql >> Databasteknik >  >> NoSQL >> MongoDB

Aggregerande efter datum i Mongodb

Jag kunde fixa det, enligt @chridams kommentar. Tack igen!

Jag skriver lösningen nedan, ifall någon skulle stöta på samma problem som jag gjorde.

Jag ändrade min fråga så att jag 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;

Detta gav mig ett serialiserat objekt. Sedan deserialiserade jag den till den anpassade klassen jag hade:

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

Här är den anpassade klassdefinitionen som kommer att vara lite polerad:

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

Jag hoppas att detta kommer att vara användbart. Tack! :)




  1. Redis vs Service Bus för pub/underscenario

  2. Vad är MongoDBs strikta läge och är det en bra idé att använda?

  3. Mongodb:Prestandapåverkan av $HINT

  4. Om selleriarbetare dör hårt, blir jobbet omprövat?