Я пытаюсь сохранить Geo Point и Geo Polygon в Mongo. Мои тесты проходят для Point, но не проходят для многоугольника:
CastError: преобразование в число завершилось неудачно для значения «0,0,3,0,3,3,0,3,0,0» в «координатах» пути
Моя схема выглядит следующим образом:
var GeoSchema = new Schema({
name: String
, coordinates: [Number]
});
GeoSchema.index({ coordinates: '2dsphere' });
Мой объект контрольной точки, который успешно сохраняет:
geoPoint = new Geo({
coordinates: [2,2],
type: 'Point'
});
Мой тестовый полигональный объект, который не удалось сохранить:
geoPolygon = new Geo({
type: 'Polygon',
coordinates: [[ [0,0], [3,0], [3,3], [0,3], [0,0] ]]
});
Я попытался изменить тип def для «координат» на объект и массив, но потом оба не удалось сохранить.
Кто-нибудь может посоветовать?
* ОБНОВЛЕНИЕ *
Теперь я могу пройти тесты, используя:
схема:
var GeoSchema = new Schema({
coordinates : { type: [], index: '2dsphere' },
type: String
});
Точечный объект:
geoPoint = new Geo({
geo: {
type: 'Point',
coordinates: [2,2]
}
});
Многоугольник:
geoPolygon = new Geo({
geo: {
type: 'Polygon',
coordinates: [
[ [100.0, 0.0], [101.0, 0.0],
[101.0, 1.0], [100.0, 1.0],
[100.0, 0.0] ]
]
}
});
Однако, когда я напрямую запрашиваю базу данных, я просто вижу:
db.geos.find()
{ "_id" : ObjectId("52b73de00b4dfee427000005"), "__v" : 0 }
{ "_id" : ObjectId("52b73de00b4dfee427000006"), "__v" : 0 }
Может кто посоветует, почему я не вижу сохраненные записи?