Ich mache eine Website, um mongoDB Daten zu erkunden. In meiner Datenbank speichern ich GPS-Messungen von Smartphones. Ich verwende verschiedene Abfragen, um diese Messungen zu untersuchen. Ich habe eine Abfrage, die nach Tagen gruppiert und die Messungen zählt. Eine weitere Abfrage zählt die Anzahl der Messungen für jede Art von Smartphone (iOS, Android,). Usw.
Alle diese Abfragen teilen die gleichen $ match-Parameter in ihrer Aggregationspipeline. In dieser Pipeline filtere ich die Messung, um in einem Zeitintervall und in einem geografischen Gebiet zu fokussieren.
Gibt es eine Möglichkeit, die im $ match gefundene Teilmenge so im Cache zu halten, dass die Datenbank diesen Filter nicht jedes Mal anwenden muss?
Ich möchte die Antwortzeit meiner Abfragen optimieren.
Probe von einer der Abfrage:
cursor = db.myCollection.aggregate(
[
{
"$match":
{
"$and": [{"t": {"$gt": tMin, "$lt": tMax}, "location":{"$geoWithin":{"$geometry":square}}}]
}
},
{
"$group":
{
"_id": {"hourGroup": "$tHour"},
"count": {"$sum": 1}
}
}
]
)
ich das Ergebnis dieser im Cache behalten möchten:
"$match":
{
"$and": [{"t": {"$gt": tMin, "$lt": tMax}, "location":{"$geoWithin":{"$geometry":square}}}]
}
Ich sehe nicht, wie das geht. – SwissFr