Mongoose/MongoDB - 一些坐标对不再适用于 2dsphere 索引
Mongoose/MongoDB - Some co-ordinate pairs no longer working with 2dsphere Indexes
我对这个有点难过。
我正在使用具有以下架构的 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 :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?: { _id: ObjectId('54affc5054096502ad086a81'), 产品: ObjectId(' 54af3f99c4528c296590426c'), geo_name: "Vancouver, BC, Canada", 文本: "", lastupdated: new Date(1420819536000), dateAdded: new Date(1420819536000), geo: [ 49.2827291, -123.1207375 ], __v: 0 }]
姓名:'MongoError',
代码:16755,
err: 'insertDocument :: caused by :: 16755 Can\'t extract geo keys from object, malformed geometry?: { _id: ObjectId(\'54affc5054096502ad086a81\'), 产品: ObjectId(\'54af3f99c4528c296590426c\'), geo_name:"Vancouver, BC, Canada",文本:“”,上次更新:新日期(1420819536000),添加日期:新日期(1420819536000),地理:[49.2827291,-123.1207375],__v:0}'}
(棘手的是,几周前工作的一些对现在遇到了那个错误)。
例如,这些对有效:
[ 33.7489954, -84.3879824 ]
(美国佐治亚州亚特兰大)
[ 41.8781136, -87.62979819999998 ]
(即美国伊利诺伊州芝加哥)
而这些不会并导致格式错误的几何错误:
[ 49.2827291, -123.12073750000002 ]
(即加拿大不列颠哥伦比亚省温哥华)
[ 37.7749295, -122.41941550000001 ]
(即美国加利福尼亚州旧金山)
有什么想法吗?我试过以不同的方式格式化 2dsphere 字段,但仍然遇到同样的问题。
似乎 MongoDB and GeoJSON is longitude, latitude 的坐标对顺序 - 而不是相反。那么问题是第二个数字超出 (-90, 90) 的任何东西都是越界的。
我对这个有点难过。
我正在使用具有以下架构的 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 :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?: { _id: ObjectId('54affc5054096502ad086a81'), 产品: ObjectId(' 54af3f99c4528c296590426c'), geo_name: "Vancouver, BC, Canada", 文本: "", lastupdated: new Date(1420819536000), dateAdded: new Date(1420819536000), geo: [ 49.2827291, -123.1207375 ], __v: 0 }] 姓名:'MongoError', 代码:16755, err: 'insertDocument :: caused by :: 16755 Can\'t extract geo keys from object, malformed geometry?: { _id: ObjectId(\'54affc5054096502ad086a81\'), 产品: ObjectId(\'54af3f99c4528c296590426c\'), geo_name:"Vancouver, BC, Canada",文本:“”,上次更新:新日期(1420819536000),添加日期:新日期(1420819536000),地理:[49.2827291,-123.1207375],__v:0}'}
(棘手的是,几周前工作的一些对现在遇到了那个错误)。
例如,这些对有效:
[ 33.7489954, -84.3879824 ] (美国佐治亚州亚特兰大)
[ 41.8781136, -87.62979819999998 ] (即美国伊利诺伊州芝加哥)
而这些不会并导致格式错误的几何错误:
[ 49.2827291, -123.12073750000002 ] (即加拿大不列颠哥伦比亚省温哥华)
[ 37.7749295, -122.41941550000001 ] (即美国加利福尼亚州旧金山)
有什么想法吗?我试过以不同的方式格式化 2dsphere 字段,但仍然遇到同样的问题。
似乎 MongoDB and GeoJSON is longitude, latitude 的坐标对顺序 - 而不是相反。那么问题是第二个数字超出 (-90, 90) 的任何东西都是越界的。