javascript - mongoosejs - Consulta mĂșltiple de mangosta/mongodb
populate mongodb (1)
Soy bastante nuevo en mongodb. Logro tener una idea básica de una ordenación simple basada en solo 1 parámetro. ¿Qué pasa si hay más de 2 parámetros de clasificación. por ejemplo, en una base de datos compuesta por proyectos de carpintería que tienen atributos totalCuttingTime
y favorited
.
La siguiente es una función correcta de mongoose / mongodb para encontrar una lista de proyectos que tienen el least
corte y orden de acuerdo con el highest
favoritos.
var ProjectModel= mongoose.model(''Project'', schema);
exports.getMinCuttingTime = function(number, callback){
var leastCutTimeResult = ProjectModel.find().sort({totalCuttingTime: 1}).select({_id: 1}).limit(number).exec(
function(err, projects) {
callback(null, projects)
}
);
var result = leastCutTimeResult.find().sort({favoriteCount: -1}).select({_id: 1}).limit(number).exec(
function(err, projects) {
callback(null, projects)
}
);
return result;
}
Es necesario poner ambos términos de sort
en un objeto:
exports.getMinCuttingTime = function(number, callback){
ProjectModel.find()
.sort({totalCuttingTime: 1, favoriteCount: -1})
.select({_id: 1})
.limit(number)
.exec(
function(err, projects) {
callback(null, projects)
}
);
};
Vale la pena señalar que el estándar ECMA-262 en el que se basa Node.js no especifica que se mantenga el orden de propiedad de un objeto, y es solo un estándar de facto para que coincida con el orden de inserción. Para eliminar cualquier duda, puede utilizar una matriz en su lugar:
.sort([[''totalCuttingTime'', 1], [''favoriteCount'', -1]])