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?
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.
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP