2014-03-14 66 views
1

我有很多不同的文档,每个文档都包含一个“保存时间”字段以及一个点。是否有可能不仅查询包含位置$附近的所有文档的文档,而且还可以在同一时间内(或彼此的1秒内)查询?执行查询以确保最佳性能的最佳方式是什么?带时间字段的Mongodb地理空间查询?

回答

2

documentation

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

所以为了让你执行你的查询是由时间限制,那么你会创建具有“savetime”,因为它是第一元素一个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教程。