查询中使用maxdistance时,geojson点返回错误的Near运算符



我正在尝试在mongodb中存储一些geojson点。这是我定义的猫鼬模式。

new mongoose.Schema({
        itemName:String,
        loc:{ type: [Number], index: '2dsphere'}
    });

接下来,我将尝试运行一个近距离操作员来查找附近的一些点。这就是我定义near查询的方式。

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:无法规范化查询:BadValue geo接近接受查询GeoJSON点时只有一个论点。额外字段已找到:$maxDistance:20]名称:'MongoError'}

如果我移除maxDistance,它将返回所有集合元素。

知道为什么会出现这个错误吗?提前感谢的任何帮助

Mongoose仍在使用"geoNear"数据库命令形式。这在所有正在运行的MongoDB版本中都被认为是过时的。

使用标准查询表单,自MongoDB 2.6及更高版本以来,该表单已与标准查询引擎集成:

Model.find({
    "loc": { 
        "$near": {
            "$geometery": {
                "type": "Point",
                "coordinates": [ 10,10 ],
            },
            "$maxDistance": 20
        }
    }
},function(err,docs) {
    // do something here
});

它是JavaScript,一种"动态类型语言"。您不需要strict类型语言所需的这些荒谬的函数助手,这些语言没有用于定义和对象结构的动态构造。

因此,按照手册(所有示例都是JSON表示法,JavaScript本机理解)告诉的去做,你总是很好的。

最新更新