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.

  • 🔢 Rajatulokset: limit()-metodi rajoittaa kyselyn palauttamien dokumenttien määrää, esimerkiksi limit(2) palauttaa kaksi tietuetta.
  • ⬇️ Lajittele laskevaan järjestykseen: sort({field:-1}) palauttaa asiakirjat valitun kentän mukaisessa laskevassa järjestyksessä.
  • ⬆️ Lajittele nousevaan järjestykseen: sort({field:1}) palauttaa asiakirjat nousevassa järjestyksessä, mikä on myös oletussuunta.
  • ⏭️ Ohita sivutus: skip()-metodi jättää huomiotta useita dokumentteja ja yhdessä limit():n kanssa se luo sivutuksen.
  • 🧷 Useita avaimia: sort() hyväksyy useita kenttiä, lajittelee ensimmäisen avaimen mukaan ja katkaisee sidokset seuraavaan.
  • 🖨️ Readable lähtö: Ketjutus forEach(printjson) tulostaa jokaisen palautetun dokumentin puhtaassa JSON-muodossa.

MongoDB Sort()- ja Limit()-kysely

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

MongoDB Rajoita kyselyn tuloksia

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

MongoDB Lajittele laskevassa järjestyksessä

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:

  1. Päätä sivukoko, esimerkiksi kaksi dokumenttia sivua kohden.
  2. Kerro sivun koko sivunumerolla miinus yksi saadaksesi ohitusarvon.
  3. 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.

UKK

Ilman sort()-funktiota MongoDB palauttaa asiakirjat luonnollisessa järjestyksessä, joka yleensä heijastaa niiden järjestystä levyllä eikä ole taattu. Ennustettavan järjestyksen saavuttamiseksi lisää aina eksplisiittinen sort()-metodi kenttään, kuten _id.

loogisesti, MongoDB sort()-funktiota käytetään aina ennen limit()-funktiota, riippumatta niiden ketjutusjärjestyksestä. Tämä tarkoittaa, että limit() palauttaa lajitellun tuloksen ylimmät dokumentit, ei satunnaista osajoukkoa, joka sitten lajitellaan.

Suurten tulosjoukkojen lajittelu ilman indeksiä pakottaa lajittelun muistissa, joka epäonnistuu, kun muistin raja ylitetään. Lajittelukentän indeksin luominen mahdollistaa MongoDB palauttaa järjestyksessä olevat tulokset tehokkaasti.

Tekoäly voi muuttaa tavallisen pyynnön, kuten 'viisi uusinta työntekijää', find().sort().limit()-kyselyksi oikealla suunnalla ja määrällä. Se selittää myös jokaisen muokkaajan, jotta aloittelijat oppivat kaavan.

Kyllä. Tekoäly voi tarkastaa kyselysuunnitelman, havaita muistissa olevat lajittelut ja suositella lajittelun tukemiseen tarvittavaa indeksiä. Tämä auttaa kehittäjiä nopeuttamaan lajittelua ja rajoittamaan kyselyitä suurissa kokoelmissa.

Tiivistä tämä viesti seuraavasti: