How to define object in array in Mongoose schema correctly with 2d geo index?

696    Asked by Ankesh Kumar in Python , Asked on Jun 8, 2021

I'm currently having problems in creating a schema for the document below. The response from the server always returns the "trk" field values as [Object]. Somehow I have no idea how this should work, as I tried at least all approaches which made sense to me ;-)

If this helps, my Mongoose version is 3.6.20 and MongoDB 2.4.7 And before I forget, it would be nice to also set it as Index (2d)

Original data:


"_id": ObjectId("51ec4ac3eb7f7c701b000000"), 
"gpx": { 
"metadata": { 
"desc": "Nürburgring VLN-Variante", 
"country": "de", 
"isActive": true 
}, 
"trk": [ 

"lat": 50.3299594, 
"lng": 6.9393006 
}, 

"lat": 50.3295046, 
"lng": 6.9390688 
}, 

"lat": 50.3293714, 
"lng": 6.9389939 
}, 

"lat": 50.3293284, 
"lng": 6.9389634 
}] 

}

Mongoose Schema:

var TrackSchema = Schema({ 
_id: Schema.ObjectId, 
gpx: { 
metadata: { 
desc: String, 
country: String, 
isActive: Boolean 
}, 
trk: [{lat:Number, lng:Number}] 

}, { collection: "tracks" });

The response from the Network tab in Chrome always looks like this (that's only the trk-part which is wrong) :

{ trk: 
[ [Object], 
  [Object], 
  [Object], 
  [Object], 
  [Object], 
  [Object],

I already tried different Schema definitions for "trk": to define Mongoose schema array of objects correctly with 2d geo index

  1. trk: Schema.Types.Mixed

  2. trk: [Schema.Types.Mixed]

  3. trk:[ { type:[Number], index: "2d" }]

Hope you can help me with a solution for the same?

Answered by Manish sharma

In order to define mongoose schema array of objects then declare trk as shown below:

trk : [{ 
lat : String,
lng : String
}]

Your Answer

Interviews

Parent Categories