Crear y encontrar geoubicación en mangosta

Estoy tratando de guardar la longitud / latitud de una ubicación en mi modelo de usuario y consultarlo con$geoNear. He visto casi cualquier página que pude encontrar sobre ese tema, pero aún no estoy seguro de cómo 1) crear el modelo de manera adecuada y cómo consultarlo.

Aquí está la parte de mi modelo:

loc: {
        //type: 'Point', // see 1
        //type: String, // see 2
        coordinates: [Number],
        index: '2dsphere' // see 3
    },

@ 1: Según la documentación, el tipo debe ser 'Punto' si quiero almacenar un punto, pero arroja

TypeError: Undefined type `Point` at `loc`
  Did you try nesting Schemas? You can only nest using refs or arrays.

lo cual tiene sentido, ya que supongo que debería ser unString

@ 2: esto no arroja inmediatamente un error, pero cuando trato de almacenar un usuario obtengo:

name: 'ValidationError',
  errors: 
   { loc: 
      { [CastError: Cast to String failed for value "[object Object]" at path "loc"]

@ 3: si quiero crear el índice de esa manera me sale el error:

TypeError: Undefined type `2dsphere` at `loc.index`
  Did you try nesting Schemas? You can only nest using refs or arrays.

Así que traté de almacenar el índice de lo que me pareció un poco más apropiado:

userSchema.index({'loc': '2dsphere'});

que arroja el siguiente error cuando intento guardar un nuevo usuario:

- { [MongoError: Can't extract geo keys from object, malformed geometry?:{ coordinates: [ -73.97, 40.77 ] }]
  name: 'MongoError',
  message: 'Can\'t extract geo keys from object, malformed geometry?:{ coordinates: [ -73.97, 40.77 ] }',
  ok: 1,
  n: 0,
  code: 16572,
  errmsg: 'Can\'t extract geo keys from object, malformed geometry?:{ coordinates: [ -73.97, 40.77 ] }',
  writeConcernError: 
   { code: 16572,
     errmsg: 'Can\'t extract geo keys from object, malformed geometry?:{ coordinates: [ -73.97, 40.77 ] }' } }
MongoError: Can't extract geo keys from object, malformed geometry?:{ coordinates: [ -73.97, 40.77 ] }

Cuando actualicé mi modelo en la base de datos a$geoNear comando Actualicé mi usuario así:

loc: {coordinates: [-73.97, 40.77]}

y podría consultarlo correctamente así:

 mongoose.model('users').db.db.command({
    "geoNear": users,
    "near": [
        <latitude>,
        <longitude>
    ],
    "spherical": true,
    "distanceMultiplier": 6378.1, // multiplier for kilometres
    "maxDistance": 100 / 6378.1, // every user within 100 km
    "query": { }

(Usé db.command desde lo que he leído$geoNear no está disponible cuando se usafind())

Todo lo que intenté hasta ahora no me llevó a ninguna parte, así que mi pregunta ahora es:

¿Cómo debería ser mi modelo de mangosta?¿Cómo puedo almacenar un usuario con su ubicación en mi base de datos?

Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta