Mongodb地理空间查询与时间字段?

时间:2014-03-14 00:22:49

标签: mongodb mongodb-query

我有很多不同的文件,每个文件都包含一个" savetime"场和一点。是否有可能不仅查询包含位置$接近某个点的所有文档,还可以查询同一时间内(或彼此在1秒内)?执行查询以确保最佳性能的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

来自documentation

  

compound 2dsphere索引可以引用集合文档中的多个位置和非位置字段。您可以按任何顺序排列字段。

因此,为了让您按时间执行约束的查询,您将创建一个{&n; 34保存时间"的compound索引。因为它是第一个元素。即:

db.collection.ensureIndex({ savetime: 1, loc: "2dsphere" })

这允许您正常约束日期,同时添加附加约束以便在该点附近找到:

db.collection.find({ 
    savetime: { $gte: new Date(<start>), $lte: new Date(<end>) },
    loc: { $near :
             { $geometry :
                 { type : "Point" ,
                   coordinates : [ <longitude> , <latitude> ] } ,
                   $maxDistance : <distance in meters>
                 }
             }
         }
})

有关详情,请参阅creatingquerying上的教程。