2

シナリオ: MongoDB に次のコレクションがあるとします。

{
    "_id" : "CustomeID_3723",    
    "IsActive" : "Y",
    "CreatedDateTime" : "2013-06-06T14:35:00Z"
}

特定の日 (2013 年 3 月 4 日など) に作成されたドキュメントの数を知りたいので、集計フレームワークを使用して解決策を見つけようとしています。

情報: これまでのところ、次のクエリを作成しました。

    collection.aggregate([
        { $group: {
            _id: '$CreatedDateTime'
            }
        },
        { $group: {
            count: {  _id: null, $sum: 1 }
            }
        },
        { $project: {
            _id: 0,
            "count" :"$count"
            }
        }
    ])

問題:上記のクエリを検討すると、カウントが得られます。しかし、日付だけに基づいているわけではありません! ユニークカウントの時間も考慮されています。

質問: フィールドに ISO 日付があることを考慮して、日付のみに基づいて (つまり、時間を除外して) ドキュメントをカウントする方法を誰か教えてもらえますか?

4

1 に答える 1

6

2つのグループを次のように置き換えます

{$project:{day:{$dayOfMonth:'$createdDateTime'},month:{$month:'$createdDateTime'},year:{$year:'$createdDateTime'}}},
{$group:{_id:{day:'$day',month:'$month',year:'$year'}, count: {$sum:1}}}

ここで日付演算子の詳細を読むことができます: http://docs.mongodb.org/manual/reference/aggregation/#date-operators

于 2013-06-06T11:07:48.740 に答える