我正在做一个网站来探索mongoDB数据。在我的数据库中,我存储了从智能手机捕获的GPS测量。我正在使用各种查询来探索这些测量。我有一个查询按天计算并计算测量结果。另一个查询计算每种智能手机(iOS,Android)的测量次数。等..
所有这些查询在其聚合管道中共享相同的$匹配参数。在这条管道中,我过滤测量值,以便在时间间隔和地理区域内进行关注。
有没有办法让数据库不需要每次都应用这个过滤器的方式来保存缓存中$匹配的子集?
我想优化我的查询的响应时间。
一个查询的示例:
cursor = db.myCollection.aggregate(
[
{
"$match":
{
"$and": [{"t": {"$gt": tMin, "$lt": tMax}, "location":{"$geoWithin":{"$geometry":square}}}]
}
},
{
"$group":
{
"_id": {"hourGroup": "$tHour"},
"count": {"$sum": 1}
}
}
]
)
我想在缓存中保持这样的结果:
"$match":
{
"$and": [{"t": {"$gt": tMin, "$lt": tMax}, "location":{"$geoWithin":{"$geometry":square}}}]
}
我不明白该怎么做。 – SwissFr