$ geoWithin没有返回任何东西

时间:2015-04-16 16:20:57

标签: mongodb

我试图使用$ geoWithin和$ centerSpehere返回半径范围内的项目列表,但没有运气。

这是我的项目架构:

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

ItemSchema.index({coordinates: '2dsphere'});

这是我应该看到的数据库项目:

{
"_id": {
    "$oid": "552fae4c13f82d0000000002"
},
"type": "Point",
"coordinates": [
    6.7786656,
    51.2116958
],
"__v": 0
}

这在目前正在测试的服务器上运行,这里看到的坐标最终会变化。

Item.find( {        
    coordinates: { $geoWithin: { $centerSphere: [ [ 51, 6 ], 100/6378.1 ] } }
}, function(err, items) {
    console.log(items); // undefined 
});

项目始终未定义,即使该坐标距离其他坐标100Km以内。

我在控制台中没有错误。

关于发生了什么的任何想法?架构错了吗?

感谢。

1 个答案:

答案 0 :(得分:1)

格式错了。 GeoJSON需要生活在一个领域:

{
    "location" : {
        "type": "Point",
        "coordinates": [6.7786656, 51.2116958]
    }
}

参见例如create a 2dsphere index