Использование 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, и все это управляется через 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' });
Сохраняемый геоджсон:
{ 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/