sql >> Database teknologi >  >> NoSQL >> MongoDB

Tilføj en slags rækkenummer til en mongodb samlet kommando / pipeline

Ikke sikker på ydeevnen i store forespørgsler, men dette er i det mindste en mulighed.

Du kan tilføje dine resultater til et array ved at gruppere/skubbe og derefter slappe af med includeArrayIndex sådan her:

[
  {$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
  }}
]

Nu, hvis din database indeholder en stor mængde poster, og du har til hensigt at paginere, kan du bruge $spring-stadiet og derefter $limit 10 eller 20 eller hvad du nu vil have vist pr. side, og bare tilføje nummeret fra $spring etape til dit række, og du får den rigtige position uden at skulle skubbe alle dine resultater for at opregne dem.



  1. Sådan implementerer du ClusterControl på AWS for at administrere din clouddatabase

  2. Slaget om NoSQL-databaserne - Sammenligning af MongoDB &MSSQL's NoSQL-funktioner

  3. redis Det ser ud til, at serveren har lukket forbindelsen

  4. Indstil Redis cache-præfiksnøgle på Symfony