Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从node.js客户端使用maxDistance对地理空间索引进行MongoDB查询失败_Node.js_Mongodb_Indexing_Geospatial_Mongoskin - Fatal编程技术网

从node.js客户端使用maxDistance对地理空间索引进行MongoDB查询失败

从node.js客户端使用maxDistance对地理空间索引进行MongoDB查询失败,node.js,mongodb,indexing,geospatial,mongoskin,Node.js,Mongodb,Indexing,Geospatial,Mongoskin,我想查询mongo db中的地理空间索引(在本教程之后设计) 因此,当我从shell执行此操作时,一切正常: db.sellingpoints.find(( { location : { $near: [48.190120, 16.270895], $maxDistance: 7 / 111.2 } } ); 但是来自我的nodejs应用程序(使用mongoskin或mongoose)的相同查询不会返回任何结果,直到我将距离值设置为一个非常高的数字(5690) 有人知道如何解决这个问题吗?所有

我想查询mongo db中的地理空间索引(在本教程之后设计)

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

db.sellingpoints.find(( { location : { $near: [48.190120, 16.270895], $maxDistance: 7 / 111.2 } } );
但是来自我的nodejs应用程序(使用mongoskin或mongoose)的相同查询不会返回任何结果,直到我将距离值设置为一个非常高的数字(5690)


有人知道如何解决这个问题吗?

所有mongo geo查询的格式都应该是(long,lat),而不是(lat,long)。 你能试试那种格式吗


PS:您需要确保以(long,lat)格式插入数据,并以(long,lat)格式进行查询

我刚刚尝试了一个简单的节点mongoose脚本来处理一些地理本地化的数据。我正在使用来自的城市地理数据,将其全部加载到mongodb中。 我已经为此编写了一个小测试代码(https://github.com/nleite/mongoose_test).

它似乎运行得很好。我甚至用你的查询来检查它是否有任何问题,但似乎效果很好


您能否提供有关架构和查询的更多信息,这些信息没有按照您的预期工作?

当我将$maxDistance设置为常量值(例如$maxDistance:0.0629496402877697841726618705036)时,您是否尝试过相同的查询,但将距离/X计算替换为常量(以排除语法相关问题)我没有得到任何结果您确定您的lat、lng在nodejs应用程序中设置为正确的值吗?是的,在将每个参数及其类型传递到查询之前,我会记录它们的日志,从控制台工作时配置是相同的。谢谢您的帮助,问题是索引没有指定最小值/最大值(环境问题)
db.collection('sellingpoints')
 .find({ location: { $near: [lat,lng], $maxDistance: distance / 111.2} })
 .limit(limit)
 .toArray(callback);
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);
});