sql >> Databasteknik >  >> NoSQL >> MongoDB

Lägg till något slags radnummer till en mongodb aggregatkommando / pipeline

Inte säker på prestandan i stora frågor, men det här är åtminstone ett alternativ.

Du kan lägga till dina resultat i en array genom att gruppera/skjuta och sedan varva ner med includeArrayIndex så här:

[
  {$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, om din databas innehåller en stor mängd poster, och du tänker paginera, kan du använda $hopp-steget och sedan $limit 10 eller 20 eller vad du vill visa per sida, och bara lägga till numret från $skip steg till ditt rownum och du kommer att få den verkliga positionen utan att behöva trycka på alla dina resultat för att räkna upp dem.



  1. Ta bort en nyckel/värde från befintlig MongoDB-post

  2. Blanda PostgreSQL och MongoDB (som Django backends)

  3. mongodb hitta genom att jämföra fältvärden

  4. Hur man infogar flera dokument samtidigt i MongoDB via Java