TransWikia.com

Como aplicar limit y skip a un arreglo de objetos dentro de un documento de mongo

Stack Overflow en español Asked on August 26, 2021

estoy trabajando con mongoose en un projecto de node y necesito hacer una consulta a una coleccion con uno parametros, esto no es problema, lo que me causa dificultades es que dentro del documento que me devuelve esta consulta hay un arreglo de ids que es demasiado grade, y no se como seleccionar y aplicarle un limit() y un skip() solo a este array dentro del documento, se que se puede hacer algo como

document.find({_id: ObjectId('aushgd78da7dusdkajs')}).skip(3).limit(5)

y esto me devolveria algo como

[{
  _id: ObjectId("aushgd78da7dusdkajs"),
  list:[
      ObjectId("asdasd8a9s8dsa987d"),
      ObjectId("asdasd8a9s8dsds83d"),
      ObjectId("asdasd8a9s8dsds83d"),
      ObjectId("asdasd8a9s8dsdsdss"),
      ObjectId("asdasd8a9s8dsds856"),
      ...
  ]
}]

pero esos metodos se ejecutan en sobre la coleccion, no sobre el array dentro de la respuesta.

habira alguna manera de aplicar los metodos limit() y skip() sobre list y no sobre el documento?

One Answer

Puedes usar $slice en la siguiente estructura:

document.find({
  _id: ObjectId('aushgd78da7dusdkajs')
}, {
  list: {
    $slice: -5
  }
})

El segundo parametro es un objeto y necesitas poner tuCampo:1 para que se muestren los que sean necesarios. En este caso le pasamos $slice a list para que solo nos retorne una parte del arreglo. -5 significa que tomara los ultimos 5.

EDICION

Agrega un arreglo donde el primer parámetro defina el indice donde debe empezar y el segundo la cantidad de elementos a mostrar.

document.find({
  _id: ObjectId('aushgd78da7dusdkajs')
}, {
  list: {
    $slice: [1,5]
  }
})

Answered by Legna on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP