Kuinka MongoDB lajittelee kyselyn tulokset?
Lajittelumenetelmä ottaa kentän ja siihen liittyvän arvon yhtenä parametrina. Lajittelumenetelmä hyväksyy JSON-muodossa olevat parametrit, kuten {Field: Value}. Useita kenttiä ja arvoja voidaan syöttää myös sort()-menetelmään lajiteltujen asiakirjojen saamiseksi kokoelmasta. Harkitse seuraavaa asiakirjaa, jossa olemme lisänneet monia muita asiakirjoja tietokantaamme. Tämän MongoDB-tietokannan nimi on 'Työntekijät'. 'Työntekijät' -kokoelmassa on kaikki alla näkyvät tiedot työntekijöistä.
db.Employees.insertMany([{
'nimi': 'Robert',
'DOB': '14-05-1993',
'Sukupuoli Mies',
'sähköposti': ' [sähköposti suojattu] ',
'osasto': 'Turvallisuus',
'palkka': 5000
},
{
'nimi': 'kyle',
'DOB': '31-05-1999',
'Sukupuoli Nainen',
'sähköposti': ' [sähköposti suojattu] ',
'osasto': 'IT',
'palkka': 6200
},
{
'nimi': 'Matteus',
'DOB': '26-04-1993',
'Sukupuoli Mies',
'sähköposti': ' [sähköposti suojattu] ',
'osasto': 'Tilit',
'palkka': 3500
},
{
'nimi': 'Kevin',
'DOB': '14-07-1991',
'Sukupuoli Mies',
'sähköposti': ' [sähköposti suojattu] ',
'osasto': 'Turvallisuus',
'palkka': 4500
},
{
'nimi': 'Julia',
'DOB': '09-12-2000',
'Sukupuoli Nainen',
'sähköposti': ' [sähköposti suojattu] ',
'osasto': 'IT',
'palkka': 2500
}
])
Kokoelma 'Työntekijä' lisätään toimitettujen asiakirjojen kanssa, joiden vahvistus näkyy seuraavassa tulosteessa. Aiomme käyttää tätä kokoelmaasiakirjaa lajittelukyselyn tulosten toimivuuden näyttämiseen.
Esimerkki 1: MongoDB lajittelematon kokoelma
Kun hakukysely suoritetaan find()-menetelmällä, se antaa aina lajittelemattoman kokoelman asiakirjoja. Tämä voi olla selkeämpi alla olevien kyselytulosten avulla.
>db.Employees.find({},{_id:0})
Tässä meillä on kysely 'Työntekijä' -kokoelmasta find()-menetelmällä. Find()-menetelmä ottaa tyhjän parametrin yhdessä '_id:0' kanssa. Yksinkertaisempaa tulosta varten asiakirjan tunnus poistetaan käyttämällä operaattoria '_id:0'. Oletuksena saamme lajittelemattomia kokoelmia, kun kyselyä etsitään find()-menetelmällä. Alla haettu tulos on kaikki lajittelemattomat asiakirjat tavalla, joka meillä on lisäyshetkellä.
Esimerkki # 2: MongoDB Lajittele kyselyn tulokset nousevassa järjestyksessä
Lajiteltu kokoelma MongoDB:ssä saadaan käyttämällä sort()-menetelmää, joka tulee sijoittaa find()-menetelmän jälkeen. MongoDB:n sort()-menetelmä ottaa parametrin, joka sisältyy kentän nimeen ja asiakirjan lajittelujärjestykseen. Meidän on syötettävä '1' parametriksi kenttään, koska haemme asiakirjat nousevassa järjestyksessä tässä esimerkissä. Seuraava lajittelukyselyn tulos on nousevassa järjestyksessä.
>db.Employees.find().sort({name:1})
Tässä olemme käyttäneet sort()-menetelmää Find-hakukyselyn jälkeen. Sort()-menetelmää käytetään lajittelemaan kenttä 'nimi' nousevaan järjestykseen, koska arvo '1' sijoitetaan määritetyn kentän viereen. Huomaa, että jos sort()-menetelmälle ei ole määritetty mitään parametriarvoa, kokoelmaa ei lajiteta. Sort()-menetelmän tulos saadaan oletusjärjestyksessä. Sort()-menetelmän tulokset nimikentän mukaan nousevassa järjestyksessä näkyvät seuraavassa MongoDB-kuoressa.
Esimerkki 3: MongoDB Lajittele kyselyn tulokset laskevassa järjestyksessä
Nyt näytämme MongoDB:n lajittelukyselyn tulokset laskevassa järjestyksessä. Tämäntyyppinen kysely on sama kuin yllä oleva esimerkki, mutta yhdellä erolla. Laskevassa järjestyksessä sort()-menetelmä ottaa arvon '-1' sarakkeen nimeä vastaan. Lajittelukyselyn tulokset laskevassa järjestyksessä on esitetty alla.
>db.Employees.find({},{'email':1,_id:0}).sort({'sähköposti':-1})Tässä hakukysely alkaa find()-menetelmällä, joka löytää kentän 'email' ja palauttaa vain kentän 'email' arvot. Seuraavaksi olemme määrittäneet sort()-menetelmän, jota käytetään 'sähköposti'-kentän lajitteluun, ja sen vieressä oleva arvo '-1' osoittaa, että saadut lajittelutulokset ovat laskevassa järjestyksessä. Laskevan järjestyksen lajittelukyselyn tulokset haetaan sen jälkeen, kun se on suoritettu MongoDB-kuoressa.
Esimerkki # 4: MongoDB Lajittele kyselytulokset useille kentille
Voimme lajitella MongoDB:n useat kentät sort()-menetelmällä. Lajiteltavat kentät tulee ilmoittaa sort()-metodissa. Lajittelu perustuu kenttien ilmoitusjärjestykseen ja lajittelujärjestystä tarkastellaan vasemmalta oikealle. Useiden kenttien lajittelukyselyn pitäisi näyttää tältä:
>db.Employees.find({},{_id:0}).sort({'nimi':1,'palkka':1})Tässä välitetään sort()-menetelmä, jossa on lajiteltavat kentät 'nimi' ja 'palkka'. Kenttä 'nimi' 'Työntekijä' -kokoelmasta lajitellaan ensin, koska se on sort()-menetelmän ensimmäinen argumenttikenttä. Sitten sort()-menetelmä lajittelee toisen argumenttikentän 'palkka'. Molempien kenttien järjestys on '1', mikä tarkoittaa, että lajittelu tapahtuu nousevassa järjestyksessä. Lajittelukyselyn useiden kenttien tulos luodaan alla määritetyssä lajittelujärjestyksessä.
Esimerkki # 5: MongoDB Lajittele kyselyn tulokset rajoitusmenetelmällä
Lisäksi sort()-menetelmä voidaan yhdistää limit()-menetelmään, joka antaa rajoitetun määrän lajiteltuja asiakirjoja kyseisen hakukyselyn mukaan. Limit()-menetelmä vaatii parametrina kokonaisluvun, joka rajoittaa tulosjoukkoon sisällytettävien asiakirjojen määrää. Hakukysely asetetaan alle, joka ensin lajittelee asiakirjan ja tarjoaa sitten määritetyt rajatositeasiakirjat.
>db.Employees.find({},{_id:0}).sort({'osasto':1,'DOB':1}).limit(4).pretty()Täällä meillä on hakukysely, joka aloittaa lajittelutoiminnon sarakkeelle 'osasto' ja sitten 'DOB' sarakkeelle nousevassa järjestyksessä käyttämällä sort()-menetelmää. Kun lajittelu on suoritettu, olemme sijoittaneet limit()-menetelmän sen viereen rajoitetun asiakirjan hakemiseksi. Limit()-menetelmälle on annettu numeerinen arvo '4', mikä tarkoittaa, että se näyttää tulostukseen vain neljä lajiteltua asiakirjaa seuraavan näytön mukaisesti:
Esimerkki # 6: MongoDB-lajittelukyselyn tulokset $sort-koosteella
Kaikissa yllä olevissa esimerkeissä olemme suorittaneet lajittelun MongoDB:n sort()-menetelmällä. MongoDB:ssä on toinenkin lajittelutapa, joka saadaan aikaan $sort-aggregaation avulla. $sort-operaattori lajittelee kaikki syöttöasiakirjat ja palauttaa sitten lajitellut asiakirjat liukuhihnaan. $sort-operaattoria käytetään alla olevaan Työntekijät-kokoelmaan.
db.Employees.aggregate([ { $lajittelu : { palkka : 1, _id: -1 } } ])Tässä olemme kutsuneet esiin koontimenetelmän, jonka sisällä voimme käyttää '$sort'-operaattoria. Sitten meillä on $sort-operaattorilauseke, joka lajittelee 'palkka'-sarakkeen nousevaan järjestykseen ja 'id'-sarakkeen laskevaan järjestykseen. Kenttään käytetty $sort aggregaatio tuottaa seuraavat tulokset:
Esimerkki # 6: MongoDB Lajittele kyselyn tulokset ohitusmenetelmällä
Sort()-menetelmä voidaan myös yhdistää skip()-metodin kanssa. Tuloksena oleva tietojoukko voi sisältää tietyn määrän asiakirjoja, jotka ohitetaan skip()-menetelmällä. Kuten limit()-menetelmä, myös skip()-menetelmä hyväksyy numeerisen arvon, joka ilmaisee ohitettavien asiakirjojen määrän. Olemme yhdistäneet sort()-menetelmän skip()-menetelmään lajittelukyselyssä.
>db.Työntekijät.find({},{_id:0}).sort({'palkka':1}).skip(4).pretty()Tässä olemme käyttäneet skip()-menetelmää sort()-menetelmän vieressä. Kun sort()-menetelmä lajittelee asiakirjat, se välittää lajittelutuloksen sort()-menetelmälle. Sen jälkeen skip()-menetelmä poisti kokoelmasta neljä ensimmäistä lajiteltua dokumenttia.
Johtopäätös
Artikkeli käsittelee lajittelukyselyn tuloksia MongoDB:ssä. Olemme käyttäneet tähän tarkoitukseen sort()-menetelmää, joka järjestää tietueet määrättyyn järjestykseen. Olemme myös käyttäneet sort()-menetelmää useiden kenttien lajitteluun. Sort()-menetelmä yhdistetään sitten limit()- ja skip()-menetelmien kanssa lajiteltuihin asiakirjoihin näiden toimintojen avulla. Lisäksi olemme toimittaneet $sort-koosteen lajittelukyselyn tuloksiin MongoDB:ssä.