Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

534
Vistas
Paginación del subdocumento Mongoose de Nodejs

Usando mongoose-paginate-v2, estoy tratando de paginar un subcomentario llamado " Elementos " de una colección, pero no lo he logrado. Este es mi modelo:

 const mongoosePaginate = require('mongoose-paginate-v2'); const PettyCashItemsSchema = Schema ( { pettyCashId:{ type: Schema.Types.ObjectId, ref:'PettyCash', required: [true, 'La Caja Chica es Obligatoria'] }, user:{ type: Schema.Types.ObjectId, ref:'Users', required: [true, 'El Usuario es obligatorio'] }, item: { type: Number, unique: true }, items:[{ concept: { type: String, maxlength:50, required: [true, 'El Concepto es obligatorio'] }, incomeAmount:{ type: Number, maxlength:50, default:0, required: [true, 'El Ingreso es obligatorio'] }, expenseAmount:{ type: Number, maxlength:50, default:0, required: [true, 'El Egreso es obligatorio'] }, description: { type: String, maxlength:50, required: [true, 'La Observación es obligatoria'] }, status: { type: Boolean, default: true, required: [true, 'El Estatus es obligatorio'] } }], status: { type: Boolean, default: true, required: [true, 'El Estatus es obligatorio'] } } );

Y estoy tratando de hacerlo de esta manera, pero devuelve el documento completo y no solo el subdocumento que necesito paginado:

 const options = { lean: true, limit: 10, page: 1, read: { pref: 'secondary', items: [ { status: true, }, ], }, }; let items = await PettyCashItems.paginate( { 'pettyCashId': pettyCashId }, options ); res.json( items );

Hasta ahora no entiendo como lograrlo pero espero que me puedan ayudar. Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No estoy seguro de si MongoDB proporciona una forma de hacer esto lista para usar, pero puede usar la $function de agregación para lograrlo.

 PettyCashItems.aggregate([ { $match: { pettyCashId: pettyCashId } }, { $addFields: { items: { $function: { body: function(items) { var skip = (page - 1) * limit var to = skip + limit return { docs: items.slice(skip, to), totalDocs: items.length } }, args: ['$items'], lang: 'js' } } } } ])

y si también desea paginar PettyCashItems , puede agregar las etapas $skip y $limit antes de la etapa $addFields

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda