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 } }