Mongoose $ near查询返回解析错误

时间:2015-05-05 23:45:04

标签: node.js mongodb mongoose geospatial

这是一个对象示例:

{
    "_id" : "581994",
    "type" : "Feature",
    "geometry" : {
        "type" : "Point",
        "coordinates" : [
            -149.0133,
            64.7439
        ]
    }
}

这是我执行的查询:

        Earthquake
            .find({
                geometry: {
                    $near: {
                        $geometry: {
                            type: 'Point',
                            coordinates: [lon, lat]
                        }
                    }
                }
            })
            .exec(function(err, results) {

                if (err) {
                    console.log(err);
                }

                return reply(results);
            })

这是我创建的模型架构:

var mongoose = require('mongoose');

mongoose.set('debug', true);

var Schema = mongoose.Schema;

var earthquakeSchema = new Schema({
    geometry: {
        type: String,
        coordinates: [Number]
    }
});

earthquakeSchema.index({
    geometry: '2dsphere'
});

var Earthquake = mongoose.model('Earthquake', earthquakeSchema);

module.exports = Earthquake;

从我的角度来看似乎是正确的,但是当我执行它时,我总会得到同样的错误:

[Error: Can't use $near with String.]

我找不到错误在哪里。我到处检查了

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案:

我必须将对应于'Point'的默认字段添加到属性'type'。现在它可以工作