MongoDB Sort() & Limit()-kysely, jossa on järjestys esimerkein
⚡ Älykäs yhteenveto
MongoDB Sort()- ja Limit()-kyselymuokkaimet ohjaavat kyselyn palauttamien dokumenttien määrää ja niiden järjestystä. limit()-metodi rajoittaa tulosten määrää, kun taas sort() järjestää dokumentit nousevaan tai laskevaan järjestykseen käyttämällä arvoja 1 tai -1.

Mikä on kyselyn muutokset?
Mongo DB tarjoaa kyselyn muokkauksia, kuten 'limit'- ja 'Orders'-lausekkeen, joka tarjoaa enemmän joustavuutta kyselyjen suorittamisessa. Tarkastelemme seuraavia kyselyn muokkaajia
MongoDB Rajoita kyselyn tuloksia
Tätä muokkausta käytetään rajoittamaan kyselyn tulosjoukossa palautettavien asiakirjojen määrää. Seuraava esimerkki näyttää, kuinka tämä voidaan tehdä.
db.Employee.find().limit(2).forEach(printjson);
Code Selitys
- Yllä oleva koodi ottaa etsintätoiminnon, joka palauttaa kaikki kokoelman asiakirjat, mutta käyttää sitten rajalauseketta rajoittaakseen palautettavien asiakirjojen määrän vain kahteen.
ulostulo
Jos komento suoritetaan onnistuneesti, seuraava Output näytetään
Tulos osoittaa selvästi, että koska raja-muuttaja on olemassa, niin korkeintaan vain 2 tietuetta palautetaan osana tulosjoukkoa ObjectId:n perusteella nousevassa järjestyksessä.
MongoDB Lajittele laskevassa järjestyksessä
Voidaan määrittää palautettavien asiakirjojen järjestys minkä tahansa kokoelman avaimen nousevan tai laskevan järjestyksen perusteella. Seuraava esimerkki näyttää, kuinka tämä voidaan tehdä.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Selitys
- Yllä oleva koodi ottaa lajittelutoiminnon, joka palauttaa kaikki kokoelman asiakirjat, mutta käyttää sitten muokkaajaa muuttaakseen tietueiden palautusjärjestystä. Tässä -1 tarkoittaa, että haluamme palauttaa asiakirjat työntekijätunnuksen laskevassa järjestyksessä.
Jos komento suoritetaan onnistuneesti, seuraava Output näytetään
ulostulo
Tulosteessa näkyy selkeästi palautettavat asiakirjat Työntekijätiedot:n alenevassa järjestyksessä.
Nouseva järjestys määritellään arvolla 1.
MongoDB Lajittele nousevaan järjestykseen
Aivan kuten sort() voi palauttaa dokumentteja laskevassa järjestyksessä, se voi palauttaa ne myös nousevassa järjestyksessä. Nouseva järjestys määritellään sort-objektin arvolla 1. Tämä järjestää dokumentit pienimmästä arvosta suurimpaan, mikä on hyödyllistä tietueiden listaamisessa vanhimmasta uusimpaan tai A:sta Ö:hön.
Seuraava esimerkki lajittelee jokaisen työntekijäasiakirjan työntekijätunnuksen mukaan nousevaan järjestykseen:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Näin kysely toimii:
- find() hakee kaikki Employee-kokoelman dokumentit.
- sort({Employeeid:1}) järjestää tulokset Työntekijäid-kentän mukaan pienimmästä id:stä suurimpaan.
- forEach(printjson) tulostaa jokaisen dokumentin luettavassa JSON-muodossa.
Kun suoritat tämän komennon, asiakirjat näkyvät EmployeeID:n mukaisessa nousevassa järjestyksessä. Nouseva järjestys on myös oletusarvoinen, joten arvon jättäminen arvoon 1 antaa valitulle kentälle pienimmän ja suurimman järjestyksen. Voit kääntää tuloksen muuttamalla arvon arvosta 1 arvoon -1. Voit myös ketjuttaa limit()-funktion palauttaaksesi vain muutaman ensimmäisen lajitellun tietueen.
MongoDB Skip() sivutusta varten
skip()-metodi kertoo MongoDB ohittaa tietyn määrän dokumentteja ennen lopun palauttamista. Yksinään skip() on harvoin hyödyllinen, mutta yhdessä limit()-funktion kanssa se luo sivutuksen, jolloin voit näyttää tulokset yksi sivu kerrallaan.
Seuraava esimerkki ohittaa kaksi ensimmäistä työntekijää ja palauttaa kaksi seuraavaa:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Voit luoda sivukohtaisen navigoinnin noudattamalla tätä mallia:
- Päätä sivukoko, esimerkiksi kaksi dokumenttia sivua kohden.
- Kerro sivun koko sivunumerolla miinus yksi saadaksesi ohitusarvon.
- Välitä kyseinen arvo skip()-funktiolle ja sivun koko limit()-funktiolle.
Esimerkiksi sivulla 1 käytetään skip(0).limit(2):ta, sivulla 2 skip(2).limit(2):ta ja sivulla 3 skip(4).limit(2):ta. Lisää aina myös sort(), jotta dokumenttien järjestys pysyy vakaana sivuilla. Huomaa, että erittäin suuret skip-arvot voivat olla hitaita suurissa kokoelmissa, koska MongoDB skannaa ja hylkää edelleen ohitetut asiakirjat; aluepohjainen sivutus on nopeampaa skaalautuvasti.
Lajittele useiden kenttien mukaan kohdassa MongoDB
MongoDB voi lajitella useamman kuin yhden kentän mukaan kerrallaan. Listaat lajitteluobjektin kentät prioriteettijärjestyksessä ja MongoDB lajittelee ensimmäisen kentän mukaan, käyttää sitten seuraavaa kenttää tasatulosten ratkaisemiseen ja niin edelleen.
Seuraavassa esimerkissä työntekijät lajitellaan nimen mukaan nousevaan järjestykseen ja samannimiset työntekijät työntekijätunnuksen mukaan laskevaan järjestykseen:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Lajitteluobjektin avainten järjestyksellä on merkitystä: EmployeeName-kenttää käytetään ensin, koska se esiintyy ensimmäisenä. Tämä usean avaimen lajittelu on hyödyllinen raporteissa, joissa ryhmittelet yhden kentän mukaan ja sitten järjestät tiedot kunkin ryhmän sisällä. Parhaan suorituskyvyn saavuttamiseksi suurissa kokoelmissa luo yhdistelmäindeksi, joka vastaa lajittelussa käytettyjä kenttiä ja ohjeita.


