MongoDB のクエリ方法に関する新規質問。毎日受け取った複数のオブジェクトを取得し、それらを 1 日の記録にまとめたいと考えています。ドキュメント構造には、最終的に次の形式で 365 日分のデータ (1 年ごと、1 年ごとに新しいドキュメントが作成される可能性があります) が含まれます。
{
"2012": {
"9": {
"1": {
"attribute1": 42.1,
"attribute2": 5.895,
"attribute3": 2347,
"attribute...n": 33076.875,
"startFuel": [
32976.75,
33018.875,
33041.375
],
"startOdometer": [
202748.9,
202973,
203100.2
],
"endOdometer" : 209855.6
},
"10": {
"attribute1": 363.90000000000003,
"attribute2": 59.242000000000004,
"attribute3": 20284,
"attribute...n": 34335.375,
"startFuel": [
34161,
34214.125,
34245.25,
34280.875
],
"startOdometer": [
209855.6,
210166.4,
210348.2,
210555.7
],
"endOdometer" : 210655.7
}
}
},
"_id": ObjectId("50b6838a6ef6585a9e51f2af"),
"key1": null,
"keu2": -1,
"key3": 572755
}
ご覧のとおり、各ドキュメントは 1 つのエンティティに属し、年には各月が含まれ、各月には各日が含まれます (その日/月/年のデータがある限り)。
このドキュメント形式を照会する方法に苦労しています。集計フレームワークを使用して、(単一のエンティティの) ドキュメント内の値を平均し、同じ期間に複数のドキュメント/エンティティにわたってそれらを集計したいと考えています。
たとえば、8 月の毎日の平均走行距離を調べたいと思います (各エンティティについて、その月の各日について、endOdometer から最も低い startOdometer を引き、その月の値を平均します)。(ところで: startOdometer は、ドキュメントが既に存在するかどうかを確認するためにドキュメントを事前にクエリすることなく、値をプッシュできるようにするための配列です)。
map/reduce を使用してすべての集計ビューをデータに作成する必要があるかどうか、または map/reduce を使用して 1 日の概要を作成し、集計フレームワークを使用してデータをまとめることができるかどうかについて、社内で議論しています。このデータ構造がそのタイプのクエリをどのようにサポートするか、または集計フレームワークを活用してデータを要約できるようにするために、他のどのデータ構造がより適切であるかを知りたいです。