2011-04-29 11 views

Respuesta

121

En la última mangosta (3.8.1 en el momento de la escritura), que hacer dos cosas de otra manera: (1) que tienen que pasar solo argumento para ordenar(), que debe ser una matriz de restricciones o una sola restricción, y (2) execFind() se ha ido, y reemplazado con exec() en su lugar. Por lo tanto, con la mangosta 3.8.1 que haría esto:

var q = models.Post.find({published: true}).sort({'date': -1}).limit(20); 
q.exec(function(err, posts) { 
    // `posts` will be of length 20 
}); 

o puede encadenar juntos simplemente como eso:

models.Post 
.find({published: true}) 
.sort({'date': -1}) 
.limit(20) 
.exec(function(err, posts) { 
    // `posts` will be of length 20 
}); 
+0

¿qué significa {'date': -1}? ¡Gracias por adelantado! – kurumkan

+1

@ArslArsl - los resultados se ordenarán por la fecha en orden decreciente. –

17

De esta manera, el uso de .Limite():

var q = models.Post.find({published: true}).sort('date', -1).limit(20); 
q.execFind(function(err, posts) { 
    // `posts` will be of length 20 
}); 
+2

Muchas gracias, no sabía que podía hacer consultas como esa. ¿Dónde puedo encontrar algún tipo de documentación sobre este método execFind? –

+0

Honestamente, solo miro los ejemplos en las fuentes de mangostas y esas cosas, así como en los casos de prueba. La lista de correo también es buena. Los documentos reales parecen un poco desactualizados. – kcbanner

+1

es execFind todavía en la última versión de mongoosejs? – Manny

1

Por alguna razón no pude conseguir que esto funcione con el respuestas propuestas, pero encontré otra variación, usando seleccionar, que funcionó para mí:

models.Post.find().sort('-date').limit(10).select('published').exec(function(e, data){ 
     ... 
}); 

¿Ha cambiado la API? Estoy utilizando la versión 3.8.19

0
models.Post.find({published: true},{date: 1}, {sort{'date': -1}, limit: 20}, function(err, posts) { 
// `posts` with sorted length of 20 
}); 
+4

Si bien este fragmento de código puede resolver la pregunta, incluyendo una explicación de * cómo * y * por qué * esto resuelve el problema [sería de gran ayuda] (// meta.stackexchange.com/q/114762) para mejorar la calidad de su publicación . Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, ¡no solo a la persona que pregunta ahora! Por favor [edite] su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. –

0

... Además, asegúrese de usar:

mongoose.Promise = Promise; 

Ajusta la promesa mangosta a la promesa ES6 nativa. Sin esta adición llegué:

DeprecationWarning: Mangosta: mpromise (biblioteca promesa por defecto de mangosta) está en desuso, conecte su propia biblioteca promesa en su lugar: http://mongoosejs.com/docs/promises.html

Cuestiones relacionadas