node.js client的maxdistance对地理空间索引的MongoDB查询



我想对Mongo-DB中的地理空间索引进行查询(此教程之后设计http://www.mongodb.org/display/docs/docs/geospatial segospatial in>

因此,当我从外壳执行此操作时,一切正常:

db.sellingpoints.find(( { location : { $near: [48.190120, 16.270895], $maxDistance: 7 / 111.2 } } );

但是,直到我将距离值设置为很高的数字(5690)

之前,我的nodejs应用程序(使用Mongoskin或Mongoose)中的查询都不会返回任何结果
db.collection('sellingpoints')
 .find({ location: { $near: [lat,lng], $maxDistance: distance / 111.2} })
 .limit(limit)
 .toArray(callback);

有人知道如何解决?

所有mongo geo查询都应采用(长,lat)而不是(lat,long)的格式。您可以尝试以这种格式吗?

ps:您需要确保数据插入(长,lat)格式,并以(长,lat)格式查询

我刚刚尝试了一个简单的节点mongoose脚本,该脚本针对某些GEO局部数据。我正在使用http://dev.maxmind.com/geoip/geolite的城市地理数据,将其全部加载到MongoDB中。我为此写了一个小的测试代码(https://github.com/nleite/mongoose_test)。

var mongoose = require('mongoose');
var db = mongoose.createConnection( 'localhost', 'geo');
var schema = mongoose.Schema( { city: 'string', loc: 'array', areaCode: 'string', country:      'string', region: 'string', locId: 'string', metroCode: 'string', postalCode: 'string'} );
var City = db.model( 'City', schema);
var distance = 7 / 111.2;
console.log( 'Distance %s', distance);
var query = City.find( { 'loc':  { $near: [48.190120, 16.270895], $maxDistance: distance      }} ); 
query.exec( function( err, city){
   if (err) return handleError(err);
   console.log( 'Found you %s' , city);
   process.exit(-1);
}); 

似乎运作良好。我什至还在您的查询检查是否有任何问题,但似乎工作正常。

您可以提供有关模式和无法正常工作的查询的更多信息吗?

最新更新