Webサービスからいくつかの統計を収集し、それをコレクションに保存しています。データは次のようになります(ただし、フィールドが多くなります)。
{"downloads": 30, "dt": "2010-02-17T16:56:34.163000"}
{"downloads": 30, "dt": "2010-02-17T17:56:34.163000"}
{"downloads": 30, "dt": "2010-02-17T18:56:34.163000"}
{"downloads": 30, "dt": "2010-02-17T19:56:34.163000"}
{"downloads": 30, "dt": "2010-02-17T20:56:34.163000"}
{…}
{"downloads": 30, "dt": "2010-02-18T17:56:34.163000"}
{"downloads": 30, "dt": "2010-02-18T18:56:34.163000"}
{"downloads": 30, "dt": "2010-02-18T19:56:34.163000"}
{"downloads": 30, "dt": "2010-02-18T20:56:34.163000"}
誰かが過去30日間の毎日の数を要求した場合、それは(この例では)「ダウンロード」prの最大量を意味します。日。これがその日の最後の記録です。
を使用するcollection.find({"dt": {"$gt": datetime_obj_30_days_ago}})
ことで、もちろんすべての行を取得しますが、これはあまり適切ではありません。だから私は与えられた期間の一日の最後だけを返す方法を探しています。
それが道かもしれないと言われgroup()
ましたが、この場合にそれを機能させる方法を完全に理解することはできません。
ヒント、ポインタをいただければ幸いです。