2014-03-14 72 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教程。