我正在Mongodb的地理空间查询中尝试。到目前为止,它非常酷,但我遇到了一堵墙。
我成功地创建了一个2dsphere索引,并且成功地能够从MongoDB CLI执行$ near查询,但是当我尝试从NodeJS中的Mongoose执行查询时,我收到一个奇怪的错误。
这是我在NodeJS中运行的代码:
var query = model.where('loc').near({ center: [50, 50], maxDistance: 5000 });
query.exec(function(err, myModel){
if(err){console.error(err);}
res.json(myModel);
});
这给了我错误: [错误:不能对字符串使用$ maxDistance。]
所以我尝试运行在MongoDB CLI中运行的原始查询:
model.find({loc: {"$near": {"$geometry": {"type": "Point" , "coordinates": [ 50 , 50 ]},"$maxDistance": 500,"$minDistance": 0}}},function(err,myModel) {
if(err){console.error(err);}
res.json(myModel);
});
我收到类似的错误: [错误:无法在字符串中使用$ near。]
从我在环顾网站时发现,看起来它可能与mongoose如何解析数据并将其传递给MongoDB有关,但我并不完全确定。我的查询基于我在这里找到的问题: http://mongoosejs.com/docs/api.html#query_Query-near http://docs.mongodb.org/manual/reference/operator/query/near/
任何解决此错误的想法都将不胜感激!