-1
私は文字列フィールド "action"と "receivedTimestamp" Dateフィールドを持つドキュメントのコレクションを持っています。その値は2016年3月と4月のものです。それぞれのアクションがいくつあるかを数えようとしています期間私はこれを実行するとMongoの集計に日付範囲が壊れていますか?
は:
db.getCollection('foo').aggregate([
{"$group": {"_id": "$action", "count": {"$sum": 1}}}
])
は、私が68件の結果を得ます。私はこれを実行すると
は:
db.getCollection('foo').aggregate([
{"$match": {"receivedTimestamp": {"$gte": new Date("2016-01-01")}}},
{"$group": {"_id": "$action", "count": {"$sum": 1}}}
])
は、私が68件の結果を得ます。私はこれを実行すると
は:
db.getCollection('foo').aggregate([
{"$match": {"receivedTimestamp": {"$gte": new Date("2017-01-01")}}},
{"$group": {"_id": "$action", "count": {"$sum": 1}}}
])
は、私が68件の結果を得ます。私はこれを実行すると
は:
db.getCollection('foo').aggregate([
{"$match": {"receivedTimestamp": {"$lte": new Date("2017-01-01")}}},
{"$group": {"_id": "$action", "count": {"$sum": 1}}}
])
私は0結果を得ます。私はこれを実行すると
は:
db.getCollection('foo').aggregate([
{"$match": {"receivedTimestamp": {"$lte": new Date("2016-01-01")}}},
{"$group": {"_id": "$action", "count": {"$sum": 1}}}
])
私は0結果を得ます。
私はMongoの集計が日付範囲を壊していると思っています。私が間違っている?
すべてのドキュメントに 'new Date(" 2017-01-01 ")'より大きい 'receivedTimestamp'があるということはできませんか? –
いいえ、彼らはすべて3月と2016年4月からです。 – Jacob
恐ろしいタイトルで、広く使用されているソフトウェアが基本的に壊れているかどうか尋ねる前に、その事実を "広く使われている"と考えるべきです。もちろん、それは壊れていませんが、***あなたのデータ**はおそらくあります。 68件の結果を忘れてください。しかし、** 4件の結果**をドキュメントとして表示してください。あるいは、あなたの記録されたデータに正確に間違っていることを喜んで指摘してください。もちろん、本当の問題はここにあります。 –