Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

256
Views
GraphQL MongoDB: Implementación de paginación de $texto $búsqueda basada en cursor

En una paginación de cursor normal, filtraría y ordenaría los documentos según el campo created , lo cual es bastante simple. Me gusta esto:

 // `cursor` is a string const books = await this.BooksModel.find({ ...(cursor ? { created: { $lt: new Date(cursor) } } : null), }) .sort({ created: -1 }) .limit(first)

Mientras tanto, al implementar la búsqueda, (creo que) tengo que ordenar y filtrar los documentos según los metadatos de textScore , que podrían tener duplicados. Para evitar esto, necesito otro campo para filtrar, que es _id . Me imagino que sería algo como esto:

 // `cursor` is { id: string, score: number } const books = await this.BooksModel.aggregate( [ { $match: { _id: { $ne: ObjectId(cursor.id) }, $text: { $search: 'sed' } } }, { $project: { title: 1, score: { $meta: 'textScore' } } }, { $match: { score: { $lt: cursor.score } } } ] )

Para lograr el ejemplo anterior, necesito que el cursor contenga no solo el documento _id (como una paginación normal) sino también la score . Me imagino que la longitud del cursor (decodificado) sería muy larga en comparación con la normal. Además, el cursor ahora contiene un objeto en lugar de solo una cadena, lo cual es bastante extraño para un novato como yo. ¿Es esta realmente la forma de crear una paginación de búsqueda basada en cursor?

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!