Near operator for geojson point returning error when maxdistance is used in query
我正在尝试在mongo db中存储一些geojson点,这是我定义的mongoose模式。
1 2 3 4 | new mongoose.Schema({ itemName:String, loc:{ type: [Number], index: '2dsphere'} }); |
下一步,我试图运行一个Near运算符以找出附近的一些点。这就是我定义Near查询的方式。
1 2 3 4 5 6 7 8 | Model.where('loc').near({ center: { type:"Point",coordinates: [10,10] }, maxDistance: 20 }).exec(function(err,data){ console.log(err); if (!err && data) { console.log("Success"); } else { console.log("Error"); } }); |
但是这将返回错误值,如下所示:
{ [MongoError: Can't canonicalize query: BadValue geo near accepts
just one argu ment when querying for a GeoJSON point. Extra field
found: $maxDistance: 20] name : 'MongoError' }
如果删除
知道为什么会出现此错误吗?感谢您的任何帮助
猫鼬仍在使用'geoNear'数据库命令格式。在所有正在进行的MongoDB版本中,这已被视为过时。
请改用标准查询表单,该表单自MongoDB 2.6及更高版本以来已与标准查询引擎集成在一起:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Model.find({ "loc": { "$near": { "$geometery": { "type":"Point", "coordinates": [ 10,10 ], }, "$maxDistance": 20 } } },function(err,docs) { // do something here }); |
它是JavaScript,一种"动态类型化的语言"。您不需要
按照手册(所有示例均以JSON表示法,JavaScript可以理解)执行告诉您的操作,您总会满意的。