0
votes

I'm trying to build a Mongoose schema for a relatively simple type. An example object coming out of mongo looks like this:

{
    "_id" : ObjectId("5df2664382f84ea90466c28e"),
    "geometry" : {
            "coordinates" : [
                    [
                            -2.600484,
                            51.446378
                    ],
                    [
                            -2.600107,
                            51.446927
                    ],
                    [
                            -2.5976,
                            51.447694
                    ],
                    [
                            -2.597077,
                            51.446343
                    ],
                    [
                            -2.598391,
                            51.446112
                    ],
                    [
                            -2.600484,
                            51.446378
                    ]
            ],
            "type" : "Polygon"
    },
    "name" : "Wapping Wharf"
}

This represents a fairly basic structure and contains an array of arrays which is where I suspect I'm going wrong in the mongo schema. This is what I have currently:

new mongoose.Schema({
    geometry: {
        coordinates: [
            [Number, Number]
        ],
        type: String
    },
    name: String
})

If I try and output the entire object returned from Mongoose within my node application I can see that a geometry property exists along with the _id and name properties. However, if I try and access geometry I get undefined. After a quick search I learned that this means the Mongoose schema is incorrect.

If I define geometry as being Schema.Types.Mixed I seem to get the object but this means I cannot define the expected schema. I've also tried defining the inner array as being Mixed but this doesn't seem to fix the issue.

Any help on this would be appreciated.

1

1 Answers

2
votes

why didn't you try this

new mongoose.Schema({
    geometry: {
        coordinates: [
            [{Number, Number}]
        ]
    },
    name: String
})