Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
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.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

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

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!