MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Limita i risultati di una query

Restituisci solo il numero di documenti di cui hai bisogno con limit() metodo.

In MongoDB, puoi usare limit() metodo per specificare un numero massimo di documenti che un cursore deve restituire.

Quando esegui una query su una raccolta utilizzando db.collection.find() metodo, puoi aggiungere limit() per specificare il limite.

Esempio

Per prima cosa facciamo una query senza un limite (così possiamo vedere quanti documenti vengono restituiti):

Senza un limite

db.artists.find( { albums: { $exists: false }} )

Risultato:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Con un limite

OK, quindi limitiamo i risultati a dire 3 documenti:

db.artists.find( { albums: { $exists: false }} ).limit(3)

Risultato:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

Nella nostra query, stiamo usando $exists operatore per verificare l'esistenza di un campo. In questo caso escludiamo quegli artisti che hanno un album campo nel documento.

Questo potrebbe essere facilmente cambiato in { $exists: true } per includere solo gli artisti con un album campo.

Aggiungi il skip() Metodo

Puoi usare skip() metodo per saltare a un documento all'interno del cursore. In altre parole, puoi controllare da dove MongoDB inizia a restituire i risultati.

db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)

Risultato:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }

Quindi puoi vedere che ha saltato il primo risultato, ma ha comunque restituito 3 documenti.

Nota che skip() può essere utilizzato su qualsiasi query (non solo con limit() ).

Ad esempio, la query nella parte superiore di questa pagina ha restituito 6 documenti. Se aggiungiamo skip(3) , finiremo con gli ultimi 3 documenti:

db.artists.find( { albums: { $exists: false }} ).skip(3)

Risultato:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }