Mongoose模式更新GeoJSON
我有以下Mongoose模式代表一个移动的对象
var vehicleSchema = new Schema({ properties:{ obj:String, name:String, id:String }, geometry : { type: {type : String}, coordinates : [ Number, Number ] } });
我试图用下面的对象和命令更新它,如果我在mongo控制台中input,但是在节点函数中使用时不更新文档,它将完美地工作。
这是要更新的对象:
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 在GeoJSON方面有一些怪癖 ,我希望这只是另一个。
您的几何模式属性应该被设置为数组的数组来存储坐标,如下所示:
geometry : { type: [Number], index: '2dsphere` //some geospatial queries require this }
然后查询和更新
{ $set: { geometry: data.geometry.coordinates } }