sql >> Base de Datos >  >> NoSQL >> MongoDB

Agregue algún tipo de número de fila a un comando / canalización agregado mongodb

No estoy seguro del rendimiento en consultas grandes, pero esta es al menos una opción.

Puede agregar sus resultados a una matriz agrupando/empujando y luego relajarse con includeArrayIndex así:

[
  {$match: {author: {$ne: 1}}},
  {$limit: 10000},
  {$group: {
    _id: 1,
    book: {$push: {title: '$title', author: '$author', copies: '$copies'}}
  }},
  {$unwind: {path: '$book', includeArrayIndex: 'rownum'}},
  {$project: {
    author: '$book.author',
    title: '$book.title',
    copies: '$book.copies',
    rownum: 1
  }}
]

Ahora, si su base de datos contiene una gran cantidad de registros y tiene la intención de paginar, puede usar la etapa $skip y luego $limitar 10 o 20 o lo que quiera mostrar por página, y simplemente agregar el número de $skip etapa a su número de fila y obtendrá la posición real sin tener que presionar todos sus resultados para enumerarlos.