【发布时间】:2015-06-15 14:15:21
【问题描述】:
使用 MongoDB v2.6.5
当我尝试将 geojson 文档保存到数据库中时,我收到以下错误:
name: 'MongoError',
code: 16755,
err: 'insertDocument :: caused by :: 16755 Can\'t extract geo keys from object, malformed geometry?: { _id: ObjectId(\'55271b90d075728028d4c9e1\'), ..., location: [ { _id: ObjectId(\'55271b90d075728028d4c9e3\'), loc: { type: "Point", coordinates: [ -105.01621, 39.57422 ] } } ] } ], status: [ "lead" ], created: new Date(1428626320406), lastName: "Doe", firstName: "John", __v: 0 }' }
我正在尝试使用 2dsphere 索引将 Point 插入到表中,所有这些都通过 MongooseJS 进行管理,如下所示。
var GeoAddressSchema = new Schema({
// Only holds points.
loc: {
type: { type: String },
coordinates: []
}
});
var Lead = new Schema({
// Other fields ...
location: [GeoAddressSchema],
// ...
});
LeadAddressSchema.index({ location: '2dsphere' });
正在保存的geojson:
{ type: "Point", coordinates: [ -111.855211, 33.58513 ] }
geojson 根据:http://geojsonlint.com/ 有效,如果我将字段括在引号中,但我不需要这样做(对于 Mongo afaik 也不能)。
有人知道为什么会失败吗?它看起来是正确的。
参考链接
MongoDB GeoJSON:http://docs.mongodb.org/manual/reference/geojson/
MongoDB 2dSphere:http://docs.mongodb.org/manual/core/2dsphere/
【问题讨论】:
-
GeoJSON 指出错误消息并在您的问题中发布,这对我来说都很好。您使用的是哪个版本的 MongoDB?你能发布一个对你来说失败的最小例子吗?
标签: javascript node.js mongodb mongoose geojson