sql >> データベース >  >> NoSQL >> MongoDB

Mongodbでの日付による集計

    @chridamのコメントによると、私はそれを修正することができました。もう一度ありがとう!

    誰かが私と同じ問題に遭遇した場合に備えて、以下の解決策を書いています。

    クエリを変更して、次のようになりました:

     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;
    

    これにより、シリアル化されたオブジェクトが得られました。次に、それを自分が持っていたカスタムクラスに逆シリアル化しました:

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

    これが少し洗練されたカスタムクラス定義です:

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

    これがお役に立てば幸いです。ありがとう! :)




    1. mongodbの各グループの最新のNレコードを取得するにはどうすればよいですか?

    2. 公式のc#ドライバーを使用してMongoDBのUpdate.Setを使用して、複数のフィールドをどのように更新しますか?

    3. Springデータ:MongoDBドキュメントの一意のフィールド

    4. 運用データベースのアクセシビリティ