用自定义的条件在mongoose中查找

我正在开发一个node.js的Web应用程序,我用mongoose和MongoDB进行存储。 这是一个凝胶应用程序。 所以有时我必须find数据库中存储的10个最近的地方。 我有这个方法来计算这个距离:

var haversine = function(p1, p2) { var R = 6371; // km var dLat = toRad(p2.lat-p1.lat); var dLon = toRad(p2.lon-p1.lon); var lat1 = toRad(p1.lat); var lat2 = toRad(p2.lat); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d; } 

其中p1和p2是点(lat:整数,lon:整数)。

那么,我该怎么做才能find最近的地方呢?

道歉,如果我不理解的问题,但如果你有一个纬度和经度存储在MongoDB中,为什么不只是确保该关键的地理索引,并使用MongoDB本身find最近的点。

假设location关键字包含经度和纬度上的地理位置索引,则可以简单地发出类似于以下的内容:

 db.places.find( { location : { $near : [lon,lat] } } ).limit(10) 

哪一个应该在你的数据库中find离lon,lat定义的位置最近的十个位置。

您可以在地理空间索引文档中find更多信息。