sql >> Database >  >> NoSQL >> MongoDB

Aggregeren op datum in Mongodb

Ik heb het kunnen repareren, volgens de opmerking van @chridam. Nogmaals bedankt!

Ik schrijf de oplossing hieronder, voor het geval iemand ooit tegen hetzelfde probleem aanloopt als ik.

Ik heb mijn zoekopdracht gewijzigd zodat ik werd:

 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;

Dit gaf me een geserialiseerd object. Daarna heb ik het gedeserialiseerd in de aangepaste klasse die ik had:

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

Hier is de aangepaste klassedefinitie die een beetje opgepoetst zal zijn:

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

Ik hoop dat dit nuttig zal zijn. Bedankt! :)




  1. overeenkomende velden intern in mongodb

  2. MGO:Kan zoekopdracht niet canoniseren:BadValue onbekende operator:$meta

  3. Hoe gaat ConnectionMultiplexer om met verbroken verbindingen?

  4. query in mongo Shell geeft SyntaxError:missing :after property