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

Mongoose / NodeJSのタイムスタンプフィールドで個別の日付アイテムをカウントするにはどうすればよいですか?

    必要なのは、での集約フレームワークの使用です。 aggregate() コマンド、少なくともあなたが尋ねるときに1つの日付を見つけるために:

    SomeSchema.aggregate(
        [
            { "$match": {
                "date": { 
                    "$gte": new Date("2014-05-08"), "$lt": new Date("2014-05-09")
                }
            }},
            { "$group": {
                "_id": "$some_item",
                "count": { "$sum": 1 }
            }}
        ],
        function(err,result) {
            // do something with result
    
        }
    );
    

    複数の日付にわたる「カウント」を具体的に探している場合は、次のようにすることができます。

    SomeSchema.aggregate(
        [
            { "$match": {
                "date": { 
                    "$gte": new Date("2014-05-01"), "$lt": new Date("2014-06-01")
                }
            }},
            { "$group": {
                "_id": { 
                    "year":  { "$year": "$date" },
                    "month": { "$month": "$date" },
                    "day":   { "$dayOfMonth": "$date" }
                }
                "count": { "$sum": 1 }
            }}
        ],
        function(err,result) {
            // do something with result
    
        }
    );
    

    そして、それはあなたに「1日あたり」のグループ化を与えます。 日付集計演算子 を探します これをさらに進めたい場合は、ドキュメントに記載されています。




    1. マングース検証エラーの処理–どこでどのように?

    2. MongoDBの配列から値を削除する3つの方法

    3. mongodbの$allパラメーターはObjectIdリストでは機能しません

    4. メモリが不足した場合、Redisは何をしますか?