Paginazione con MongoDB

Sto iniziando ad usare MongoDB come backend per i miei applicativi, sono un newbie del nosql e vorrei capire come fare la paginazione dei risultati di dati, esiste una istruzione specifica per la pagination?

In Corso 3
MongoDB 06-06-2018 1 Risposta 1013 Visite +1

Risposte ( 1 approvate )

  1. Bruno Verzinesi
    +4
    06-06-2018 17:14:00
    Rispondi

    Come succede anche nei database relazionali per fare la paginazione dei 'records' devi avvalerti di due calusole che ti consentano uno di 'limitare' il numero di risultati ritornati e secondo di 'saltare' (slittare) ai successivi record non ancora selezionati. Ad esempio in MySql e Postgres si usano LIMIT ed OFFSET per la paginazione, e la stessa cosa accade in MongoDB usando le funzioni limit() e skip().

    Supponiamo tu abbia una collection di utenti chiamata 'users', eccoti un esempio di come paginarla

    > db.users.find().limit(3)

    questa ti ritorna i primi 3 utenti della lista, ed equivale a scrivere

    > db.users.find().skip(0).limit(3)

    avendo impostato ad es. il page_size a 3 per i successivi 3 utenti (seconda pagina) avrai quindi

    > db.users.find().skip(3).limit(3)

    Quindi volendo automatizzare queste query per poterne realizzare una paginazione andiamo a definire le seguenti variabili:

    • PAGE_SIZE = 3
    • PAGE_NUMBER = (Totale Numero Records)/PAGE_SIZE

    e avendo il numero di pagina da visualizzare (ad es. prelevandolo dalla query string) puoi ottenere facilmente gli elementi da visualizzare per quella data pagina così:

    > db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)

    Le 'query' fatte a MongoDB per la paginazione come vedi sono molto semplici e a seconda del linguaggio di programmazione usato fare il resto suppongo non sia un problema.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Damiano Beltrono

Damiano Beltrono

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva