У меня есть следующая схема Mongoose, представляющий движущийся объектMongoose схема обновления в формате GeoJSON
var vehicleSchema = new Schema({
properties:{
obj:String,
name:String,
id:String
},
geometry : {
type: {type : String},
coordinates : [ Number, Number ]
}
});
и я пытаюсь обновить его с помощью следующего объекта и команды, которые работают без сбоев, если я вхожу в Монго консоли, но не обновляется документ при использовании в функции узла.
Это объект, который будет обновлен:
var updatedVehicle = new Vehicle(
{properties:{
obj:"Answer",
name:"is",
id:"42"
},
geometry:{
type:"Point",
coordinates:[42,42]
}
})
И это команда обновление
Vehicle.update(
{$and:[
{'properties.obj':data.properties.obj},
{'properties.id':data.properties.id}
]},
{$set:
{properties:data.properties, geometry:data.geometry}
},
{upsert: true},
cb
)
Я знаю, что Mongoose имеет некоторые quirks when it comes to GeoJSON, и я надеюсь, что это просто еще один.
Но не что отклоняться от формата GeoJSON? На основе этого формата поле типа хранится в типе. – Dimitris
@Dimitris Я не смотрел спецификацию GeoJSON, но mongo не требует установки свойства type, ведь схема - это просто абстракция мангуста, она не отражается на мангусте, за исключением определенных случаев, таких как 'index'. Однако он требует указать тип при выполнении геопространственного запроса, как показано здесь. Http://docs.mongodb.org/manual/tutorial/query-a-2dsphere-index/ – Jakeii
Итак, я понимаю, что мне не нужно беспокоиться о схеме, пока я индексирован геометрия и использую этот тип при выполнении геопространственных запросов. Это означает, что я могу создать новый объект только с геометрией: [x, y], index: '2dsphere'} Кстати, я предпочитаю использовать «testV.index ({'geometry': '2dsphere'}) ;» один раз в схеме, чем добавление его к каждому новому объекту. Я сделаю некоторое тестирование и вернусь. ; - – Dimitris