MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So rufen Sie mit Mongoose das nächste und vorherige Element des aktuellen Elements ab

Nehmen wir also an, Sie haben ein Schema wie dieses:

{
 _id,
 text    
}

Ich nehme an, dass _id Mongo ObjectId ist, also enthält es das Post-Datum und ich kann danach sortieren

Nehmen wir an, ich habe den aktuellen Beitrag mit der ID gleich ObjectId( "43cc63093475061e3d95369d") geöffnet (Stattdessen verwende ich curId ) und ich muss das nächste und das vorherige wissen. Berücksichtigen wir auch, dass wir alle Posts einzeln erhalten müssen, sortiert nach Erstellungsdatum absteigend:

Holen Sie sich den nächsten Beitrag, den Sie mögen können:

db.posts.find({_id: {$gt: curId}}).sort({_id: 1 }).limit(1)

Holen Sie sich den vorherigen Beitrag, den Sie mögen können:

db.posts.find({_id: {$lt: curId}}).sort({_id: -1 }).limit(1)

Ein paar Dinge:

  1. Wenn Sie mongodb ObjectId nicht verwenden obiger Code wird für Sie nicht funktionieren, aber Sie können trotzdem postDate verwenden statt id und aktuellem Beitrag postDate statt curId .
  2. Achten Sie auf die Reihenfolge beim Abrufen der nächsten/vorherigen Beiträge. Um den nächsten Beitrag abzurufen, benötigen Sie sort asc, um den vorherigen Beitrag abzurufen, benötigen Sie sort desc.
  3. Ich bin mit Mongoose nicht vertraut, also sind obige Skripte Mongodb-Shell-Skripte.