Mongoose架构更新GeoJSON

时间:2014-10-09 10:01:51

标签: node.js mongodb mongoose geojson

我有以下表示移动对象的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,我希望这只是另一个。{

1 个答案:

答案 0 :(得分:2)

您的几何模式属性应该只设置为数组来存储坐标,如下所示:

geometry : {
    type: [Number],
    index: '2dsphere` //some geospatial queries require this
}

然后查询并更新为

{ $set: { geometry: data.geometry.coordinates } }