sql >> Database >  >> NoSQL >> MongoDB

Voeg een soort rijnummer toe aan een mongodb-aggregaatopdracht / pijplijn

Niet zeker over de prestaties bij grote zoekopdrachten, maar dit is in ieder geval een optie.

U kunt uw resultaten aan een array toevoegen door te groeperen/duwen en vervolgens ontspannen met includeArrayIndex zoals dit:

[
  {$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, als uw database een groot aantal records bevat en u van plan bent te pagineren, kunt u de $skip-fase gebruiken en vervolgens $ limiet 10 of 20 of wat u ook per pagina wilt weergeven, en gewoon het nummer van de $skip toevoegen stap naar je rownum en je krijgt de echte positie zonder al je resultaten te hoeven pushen om ze op te sommen.



  1. Node.js mongodb-stuurprogramma async/wacht op vragen

  2. Redis-beheerpaneel

  3. Rescue:Verbinding geweigerd - Kan geen verbinding maken met Redis op localhost:6379

  4. MongooseError - Bewerking `users.findOne()` buffering time-out na 10000ms