Mongoose / MongoDB - 一些坐标对不再使用2dsphere索引

时间:2015-01-09 16:13:10

标签: node.js mongodb mongoose

我对这一点感到有点难过。

我使用以下架构使用Mongoose保存地理数据:

var placeSchema = new Schema ({
    product: {type:Schema.ObjectId, ref:'Product', required:true},
        text : String,
    geo : { type: [Number], index: { type: '2dsphere', sparse: true } },
    geo_name : String,
  dateAdded: {type: Date, default: moment},
});

最近几周前,所有的坐标对都在保存并成功检索。但是,现在,某些坐标对使Mongo抱怨:

{[MongoError:insertDocument ::由:: 16755引起无法从对象,格式错误的几何体中提取地理键?:{_ id:ObjectId(' 54affc5054096502ad086a81'),product:ObjectId(& #39; 54af3f99c4528c296590426c'),geo_name:" Vancouver,BC,Canada",text:"",lastupdated:new Date(1420819536000),dateAdded:new Date(1420819536000) ,geo:[49.2827291,-123.1207375],__ v:0}]   名称:' MongoError',   代码:16755,   错误:' insertDocument ::由:: 16755引起无法从对象,格式错误的几何体中提取地理键?:{_ id:ObjectId(\ _' 54affc5054096502ad086a81 \'),产品:ObjectId(\' 54af3f99c4528c296590426c \'),geo_name:" Vancouver,BC,Canada",text:"",lastupdated:new Date(1420819536000), dateAdded:new Date(1420819536000),geo:[49.2827291,-123.1207375],__ v:0}' }

(棘手的是,几周前工作的一些配对现在正在发生这种错误。)

例如,这些配对工作:

[33.7489954,-84.3879824] (美国佐治亚州亚特兰大市)

[41.8781136,-87.62979819999998] (这是美国伊利诺伊州芝加哥市)

这些不会导致格式错误的几何错误:

[49.2827291,-123.12073750000002] (加拿大不列颠哥伦比亚省温哥华)

[37.7749295,-122.41941550000001] (美国加利福尼亚州旧金山)

有什么想法吗?我尝试过有点不同地格式化2dsphere字段,但仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:1)

似乎是MongoDB and GeoJSON is longitude, latitude的坐标对的顺序 - 而不是相反。那么问题是第二个数字超出(-90,90)的任何东西都超出界限。