MongoDB Kyselyasiakirja: db.collection.find() esimerkillä

⚡ Älykäs yhteenveto

MongoDB Kyselydokumenttitoiminnot hakevat tietueita kokoelmasta db.collection.find()-funktiolla. Metodi palauttaa oletusarvoisesti kaikki dokumentit, hyväksyy suodatuskriteerit, kuten kenttien osumat ja $gt-operaattorin, ja muotoilee tulokset forEach(printjson)-komennolla.

  • 🔍 etsi()-funktio: db.collection.find()-metodi hakee dokumentteja MongoDB kokoelma, palauttaa kaikki dokumentit, kun suodatinta ei ole annettu.
  • 🎯 Suodatuskriteerit: Kyselyobjektin, kuten {EmployeeName: “Smith”}, välittäminen palauttaa vain ehtoa vastaavat asiakirjat.
  • Kysymys Operatorit: Valintaoperaattorit, kuten $gt, $lt ja $in, tarkentavat tuloksia, esimerkiksi löytävät työntekijöitä, joiden tunnus on suurempi kuin 2.
  • 🖨️ Readable lähtö: Ketjuttamalla forEach(printjson) tulostaa jokainen palautettu dokumentti puhtaassa JSON-muodossa.
  • 🧾 Projektio: Toinen find()-funktion argumentti valitsee, mitkä kentät sisällytetään tuloksiin tai jätetään niistä pois.

Menetelmä tietojen hakemiseksi tai hankkimiseksi a MongoDB tietokanta suoritetaan käyttämällä MongoDB kyselyitä. Kyselyoperaatiota suoritettaessa voidaan käyttää myös kriteerejä tai ehtoja, joiden avulla tietokannasta voidaan hakea tiettyjä tietoja.

MongoDB tarjoaa toiminnon nimeltä db.collection.find() jota käytetään asiakirjojen hakemiseen osoitteesta a MongoDB tietokanta.

Tämän aikana MongoDB kyselyn opetusohjelmassa, näet, kuinka tätä toimintoa käytetään eri tavoin asiakirjan haun tarkoituksen saavuttamiseksi.

Mikä on db.collection.find()-funktio funktiossa MongoDB?

db.collection.find()-metodi on ensisijainen tapa lukea dokumentteja MongoDB kokoelma. Kun kutsut sitä ilman argumentteja, se palauttaa kaikki kokoelman dokumentit. Kun välität kyselyobjektin, se palauttaa vain ne dokumentit, jotka vastaavat annettuja kriteerejä, joten voit hakea juuri tarvitsemasi tiedot.

Metodi palauttaa kohdistimen, joka on osoitin tulosjoukkoon eikä itse dokumentteihin. Yleensä kohdistimen läpi kierretään silmukka tulosten näyttämiseksi, usein forEach(printjson)-metodilla jokaisen dokumentin näyttämiseksi luettavassa JSON-muodossa. Jos tarvitset vain yhden tietueen, MongoDB tarjoaa myös findOne()-funktion, joka palauttaa ensimmäisen vastaavan dokumentin kohdistimen sijaan. Yhdessä find() ja findOne() kattavat useimmat lukuoperaatiot MongoDB tietokannasta, kokonaisten kokoelmien hakemisesta tiettyjen kenttäarvojen suodattamiseen.

MongoDB Peruskysely OperaTIONS

Perus MongoDB kyselyoperaattorit kattavat yksinkertaiset toiminnot, kuten kaikkien asiakirjojen saamisen a MongoDB kokoelma. Katsotaanpa db.collection.find esimerkkiä siitä, kuinka voimme saavuttaa tämän.

Kaikki koodimme suoritetaan MongoDB JavaKäsikirjoitus komentokuori. Ajattele, että meillä on kokoelma nimeltä "Työntekijä". MongoDB tietokanta ja suoritamme alla olevan komennon.

MongoDB Peruskysely OperaTIONS
MongoDB Peruskyselyn toiminta

Code Selitys:

  1. Työntekijä on kokoelman nimi MongoDB tietokanta
  2. MongoDB hakukysely on sisäänrakennettu toiminto, jota käytetään kokoelman asiakirjojen hakemiseen.

Jos komento suoritetaan onnistuneesti, seuraava tulos näytetään MongoDB löytää esimerkki

lähtö:

MongoDB Peruskysely OperaTIONS

Tulos näyttää kaikki kokoelmassa olevat asiakirjat.

Voimme myös lisätä kriteerejä kyselyihimme, jotta voimme hakea dokumentteja tietyin ehdoin.

MongoDB Kyselyesimerkki – 1

Katsotaanpa pari MongoDB kysy esimerkkejä siitä, kuinka voimme saavuttaa tämän.

db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);

Code Selitys:

  1. Tästä haluamme löytää työntekijän, jonka nimi on "Smith" kokoelmasta , joten syötämme suodatuskriteerit nimellä EmployeeName : "Smith"

Jos komento suoritetaan onnistuneesti, seuraava Output näytetään

lähtö:

MongoDB Kyselyesimerkki

Tulos näyttää, että vain asiakirja, jonka työntekijän nimenä on "Smith", palautetaan.

MongoDB Kyselyesimerkki – 2

Nyt tässä MongoDB kyselyjen opetusohjelmassa, katsotaanpa toista koodiesimerkkiä, joka käyttää hakuehtoja suurempia. Kun tämä kriteeri on sisällytetty, se itse asiassa hakee niitä asiakirjoja, joissa kentän arvo on suurempi kuin määritetty arvo.

db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);

Code Selitys:

  1. Tästä haluamme löytää kaikki työntekijät, joiden id on suurempi kuin 2. $gt:tä kutsutaan kyselyn valintaoperaattoriksi, ja se tarkoittaa vain, että käytetään lauseketta suurempi kuin.

Jos MongoDB Valitse kentät -komento on suoritettu onnistuneesti, seuraava tulos näytetään

lähtö:

MongoDB Kyselyesimerkki

Kaikki asiakirjat, joiden työntekijätunnus on suurempi kuin 2, palautetaan.

MongoDB Kysymys OperaTors

MongoDB suodattaa dokumentteja käyttämällä kyselyvalintaoperaattoreita find()-kriteerien sisällä. Näiden operaattoreiden avulla voit löytää vastaavuuksia alueille, listoille ja negaatioille tarkkojen arvojen sijaan. Alla olevassa taulukossa luetellaan yleisimmät operaattorit:

OperaTor Merkitys esimerkki
$gt Suurempi kuin {Työntekijätunnus: {$gt: 2}}
$lt Less kuin {Työntekijätunnus: {$lt: 5}}
$gte Suurempi tai yhtä suuri kuin {ikä: {$gte: 18}}
$lte Less kuin tai yhtä suuri kuin {ikä: {$lte: 60}}
$ne Ei ole yhtä suuri kuin {status: {$ne: “aktiivinen”}}
$in Vastaa mitä tahansa arvoa listasta {osasto: {$in: [“HR”,”IT”]}}

Voit myös yhdistää ehtoja operaattoreihin $and ja $or luodaksesi tarkempia kyselyitä. Oikean operaattorin valitseminen pitää kyselyt tehokkaina ja palauttaa vain sovelluksesi tarvitsemat asiakirjat.

Projektion käyttö find()-funktion kanssa

Oletusarvoisesti find() palauttaa koko dokumentin, kaikkine kenttineen. Usein tarvitaan vain muutama kenttä, kuten nimi tai id. MongoDB antaa sinun hallita tätä projektiolla, joka on find()-funktiolle annettu toinen argumentti, joka listaa sisällytettävät tai poissuljettavat kentät.

Jos haluat sisällyttää vain tietyt kentät, aseta niiden arvoksi 1 projektio-objektissa. Seuraava kysely palauttaa vain EmployeeName-kentän jokaisesta dokumentista:

db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);

MongoDB palauttaa aina _id-kentän, ellet sulje sitä erikseen pois. Voit piilottaa sen asettamalla _id:n arvoksi 0:

db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);

Voit myös sulkea kenttiä pois sisällyttämisen sijaan asettamalla niiden arvoksi 0. Esimerkiksi alla oleva kysely palauttaa kaikki kentät paitsi Työntekijätunnus:

db.Employee.find({}, {Employeeid: 0}).forEach(printjson);

Muista, että et voi sekoittaa sisällyttämistä ja poissulkemista samassa projektiossa, lukuun ottamatta _id-kenttää. Projektion käyttö vähentää palvelimelta siirrettävän tiedon määrää, mikä nopeuttaa kyselyitä ja helpottaa vastausten lukemista, erityisesti suurissa dokumenteissa.

UKK

find() palauttaa kursorin kaikkiin kyselyä vastaaviin dokumentteihin, joten se voi palauttaa useita tuloksia. findOne() palauttaa vain ensimmäisen vastaavan dokumentin yhtenä objektina tai null-arvon, jos yhtään vastaavaa dokumenttia ei löydy.

Ketjuta sort() ja limit() find()-kursoriin. Esimerkiksi find().sort({age:1}).limit(5) palauttaa viisi nuorinta tietuetta. Käytä sort()-funktiossa arvoa 1 nousevaan järjestykseen ja arvoa -1 laskevaan järjestykseen.

Käytä countDocuments()-funktiota saman suodattimen kanssa, esimerkiksi db.Employee.countDocuments({EmployeeName:”Smith”}). Se palauttaa vastaavien dokumenttien määrän hakematta niitä itse, mikä on nopeampaa kuin koko tulosjoukon lukeminen ja laskeminen.

Tekoäly voi muuntaa selkokielisen pyynnön find()-kyselyksi oikeilla operaattoreilla ja projektiolla sekä selittää jokaisen osan. Testaa kysely aina esimerkkidatalla ennen sen suorittamista tuotannossa.

Kyllä. Tekoäly voi lukea kyselysuunnitelman, havaita puuttuvat indeksit tai tehottomat operaattorit ja ehdottaa indeksejä tai uudelleenkirjoitettuja suodattimia. Tämä auttaa kehittäjiä parantamaan find()-funktion suorituskykyä suurissa kokoelmissa nopeammin.

Tiivistä tämä viesti seuraavasti: