¿Cómo clasificar la matriz de documentos incrustados a través de consultas de mangostos?

StackOverflow https://stackoverflow.com/questions/9349282

  •  27-10-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación Node.js con Mongoose y tengo un problema relacionado con la clasificación de documentos integrados. Aquí está el esquema que uso:

var locationSchema = new Schema({
    lat: { type: String, required: true },
    lon: { type: String, required: true },
    time: { type: Date, required: true },
    acc: { type: String }
})

var locationsSchema = new Schema({
    userId: { type: ObjectId },
    source: { type: ObjectId, required: true },
    locations: [ locationSchema ]
});

Me gustaría generar las ubicaciones integradas en laslocaciones de usuario documentadas por su atributo de tiempo. Actualmente hago la clasificación en JavaScript después de recuperar los datos de MongoDB así:

function locationsDescendingTimeOrder(loc1, loc2) {
   return loc2.time.getTime() - loc1.time.getTime()
}

LocationsModel.findOne({ userId: theUserId }, function(err, userLocations) { 
   userLocations.locations.sort(locationsDescendingTimeOrder).forEach(function(location) {
      console.log('location: ' + location.time);
   }
});

Leí sobre la API de clasificación proporcionada por Mongoose, pero no pude entender si se puede usar para clasificar los conjuntos de documentos incrustados y, en caso afirmativo, si se trata de un enfoque sensato y cómo aplicarlo a este problema. ¿Alguien puede ayudarme aquí, por favor?

Gracias de antemano y saludos, Georg

¿Fue útil?

Solución

Lo estás haciendo de la manera correcta, Georg. Sus otras opciones son clasificar las ubicaciones por tiempo al incrustar en primer lugar, o seguir la ruta más tradicional no incrustada (o una ruta mínimamente incrustada para que pueda estar incrustando una variedad de identificaciones o algo así, pero en realidad está consultando la ubicaciones por separado).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top