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