Quiero hacer una función de paginación en mi Colección. ¿Cómo se pueden encontrar documentos con posiciones de "inicio" y "límite" y obtener el número total de documentos en una sola consulta?Cómo hacer la paginación con mangosta
Respuesta
No se puede obtener tanto en una consulta; lo mejor que puede hacer es conseguir que ambos usando una mangosta Query
objeto:
var query = MyModel.find({});
query.count(function(err, count) {...});
query.skip(5).limit(10).exec('find', function(err, items) {...});
usen una estructura de control de flujo como async
para ejecutar limpiamente en paralelo si es necesario.
ACTUALIZACIÓN:
El uso de saltar y el límite no es bueno para la paginación. Here is the discussion over it.
@Wes Freeman, Dio una buena respuesta. Leí la pose vinculada, debes usar la consulta de rango. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}});
vieja respuesta (no utilice este)
usar algo como
n = db.students.find().skip(n).limit(10);
//pass n dynamically, so for page 1 it should be 0 , page 2 it should be 10 etc
más documentación en http://www.mongodb.org/display/DOCS/Advanced+Queries
Gracias por la respuesta, pero es necesario obtener el recuento total de documentos. – Erik
total = db.students.find(). Count() –
Wes Freeman, dio una buena respuesta. Leí la pose vinculada, debes usar la consulta de rango. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}}); –
Si va a tener muchas páginas, no debe usar omitir/limitar, sino calcular rangos.
respuestaSede de Scott como una pregunta similar: MongoDB - paging
Usted puede utilizar el plugin Mongoose Paginate:
$ npm install mongoose-paginate
Después de sus rutas o controlador, sólo tiene que añadir:
Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.page - 3
// result.pages
});
user.find({_id:{$nin:friends_id},_id:{$ne:userId}},function(err,user_details){
if (err)
res.send(err);
response ={
statusCode:200,
status:true,
values:user_details
}
res.json(response);
}).skip(10).limit(1);
Su respuesta puede ser la correcta, pero intente agregar más contexto a su código para ayudar a todos los que puedan estar buscando lo mismo. Consulte [¿Cómo escribo una buena respuesta?] (Https://stackoverflow.com/help/how-to-answer) – rmjoia
Explique qué hace el código en su respuesta para que las personas con poco conocimiento de las tecnologías involucradas tener la oportunidad de comprenderlo y reutilizarlo. – Wndrr
- 1. ¿Cómo hacer paginación con simpledb?
- 2. ¿Cómo hacer la paginación con cancan?
- 3. ¿Cómo puedo hacer la paginación con colecciones @OneToMany
- 4. Cómo hacer paginación con Exchange Web Services CalendarView
- 5. ¿Cómo hacer una paginación desde una matriz?
- 6. Referencia circular con mangosta
- 7. ¿Cómo hacer la paginación en Meteor sin parpadeo?
- 8. Meteor: ¿Integración con Mangosta?
- 9. cómo manejar la paginación con Backbone.Marionette
- 10. Cómo hacer la paginación en SQL Server 2008
- 11. ¿Cómo actualizar en mangosta?
- 12. actualización por lotes con Mangosta
- 13. Incrementando un valor con mangosta?
- 14. Fechas en la mangosta?
- 15. Cómo utilizar mangosta findOne
- 16. paginación Objectify con cursores
- 17. Paginación Datalist con linq
- 18. la "FBReader" hacer la paginación de archivos html en epub
- 19. Problemas con la paginación y la clasificación
- 20. Cómo hacer la paginación en una consulta NHibernate SQL con DISTINCT
- 21. Paginación con ramita
- 22. paginación Mes con kaminari
- 23. Doctrina: Paginación con combinaciones de la izquierda
- 24. Paginación con Oracle
- 25. Paginación precisa con uniones hacia la izquierda
- 26. Paginación con MongoDB
- 27. ¿Cómo hacer paginación usando consultas de rango en MongoDB?
- 28. ¿Cómo podemos hacer paginación en datagridview en winform
- 29. ¿Cómo hacer la autenticación con Node.js, Express y Mongoose?
- 30. ¿Cuál es la mejor manera de hacer la paginación ajax con MongoDb y Nodejs?
Gracias! Funciona bien para mí – Erik
Cuando ejecuto esto, el ejecutivo en la segunda consulta devuelve lo mismo que el recuento ... ¿La función de conteo modifica la consulta original? –
@ZekeAlexandreNierenberg Tienes razón, Zeke; eso debe haber cambiado como un punto. Actualicé el ejemplo para agregar el parámetro ''find'' a la llamada' exec' para que funcione con Mongoose 3.6.20. – JohnnyHK