Mis on MongoDB findOne ja kuidas seda kasutada?
MongoDB meetod findOne on suurepärane kogumite otsimiseks. Siiski tagastab see ainult ühe tulemuse, mistõttu ei sobi see paljude otsingutüüpide jaoks.
Mis on MongoDB findOne?
MongoDB on andmebaaside haldamise süsteem, mis suudab tänu NoSQL-lähenemisele ja märkimisväärsele skaleeritavusele hõlpsasti salvestada ja hallata suuri andmehulki. Kuigi need omadused pakuvad kasutajatele märkimisväärseid eeliseid, tähendab see ka seda, et süsteem vajab tugevaid meetodeid, et tagada kasutajate tõhus navigeerimine andmebaasis.
Süsteem salvestab kõik tüüpi andmed BSON-dokumendi (binaarne JSON) vormis ja koondab need dokumendid kogudesse. Kui soovite ühte neist dokumentidest otsida ja väljastada, on teil mitu võimalust. Lisaks üldisemale otsingumeetodile MongoDB find on MongoDB findOne väga tõhus meetod suurte andmebaaside täpseks filtreerimiseks.
MongoDB findOne otsib kõik dokumendid ja kogud vastavalt kasutaja määratud kriteeriumidele. Selle meetodi eripäraks on see, et see tagastab alati täpselt ühe dokumendi. Kui otsingupäringus on ainult üks dokument, tagastatakse see dokument. Kui mitu dokumenti vastab kasutaja määratud parameetritele, tagastab MongoDB findOne dokumendi, mis ilmub esimesena andmebaasi loomulikus järjekorras. Kui otsingust ei leita ühtegi dokumenti, on väljundiks „null”.
Mis on MongoDB findOne’i süntaks?
MongoDB findOne põhiline süntaks on lihtne. Meetodit kasutatakse järgmiselt:
db.collection.findOne ( <query>, <projection>, <options> )shellAlla <query> võite määrata, kuidas meetod dokumente filtreerima peaks.
Alla <projection> võite määrata, millised väljad peaksid tagastatavas dokumendis kuvatama. Kasutage booli väärtusi 1 (tõene/kaasa arvatud) ja 0 (vale/välja arvatud), et märkida, kas väli peaks olema kaasatud. Kui see parameeter jääb tühjaks, kuvatakse kõik väljad.
Kolmas otsinguparameeter <options> võimaldab otsingut veelgi täpsustada ja muuta ka kuvatavat teavet. Kõik kolm otsinguparameetrit on valikulised.
Kuidas luua kogumik testimise eesmärgil
Kui olete installinud MongoDB Linuxi, Windowsi või Maci ja soovite kasutada MongoDB findOne’i, tasub luua testkeskkond, et meetodit katsetada.
Kui te pole veel andmebaasi loonud, lugege meie põhjalikku MongoDB-õpetust, et õppida, kuidas seda teha. Allpool toodud näites kasutame viie kirje sisaldavat töötajate andmebaasi. Iga kirje sisaldab teavet töötaja nime, soo ja vanuse kohta ning selle kohta, kui kaua isik on ettevõttes töötanud. Kogumik näeb välja järgmine:
# Create Collection
db.employee.insertMany ( [
{
name : "Smith",
gender : "Female",
age : 56,
year : 2002
},
{
name : "Jones",
gender : "Female",
age : 40,
year : 2017,
},
{
name : "Brown",
gender : "Male",
age : 40,
year : 2019
},
{
name : "Michaels",
gender : "Female",
age : 44,
year : 2015
},
name : "Cartwright",
gender : "Male",
age : 22,
year : 2022
}
]
)shellMillised on erinevad viisid otsinguks Mongo DB findOne abil?
MongoDB findOne abil on teabe otsimiseks mitu võimalust. Otsida saab ilma parameetriteta, ID abil, ühe või mitme välja abil.
Otsimine ilma parameetriteta
Kui kasutate MongoDB findOne meetodit ilma parameetriteta, otsib süsteem teie andmebaasist kõik kanded. Meie näites tähendab see, et meetod tuvastab viis kannet. Kuna ükski dokument ei ole välistatud ja meetod tagastab ainult ühe tulemuse, valib MongoDB findOne esimese isiku, kes andmebaasi sisestati.
db.employee.findOne ( )shellVäljund on:
db.employee.findOne ( )
{
_id : ObjectID ( "529ete7300of4002bme148om" ),
name : "Smith",
gender : "Female",
age : 56,
year : 2002
}shellOtsimine ID järgi
Tavaliselt soovite oma otsingule mingisugused kriteeriumid määrata, et leida just see dokument, mida tegelikult vajate. Üks viis MongoDB findOne abil dokumente otsida on ID järgi otsida.
Välja _id on igas dokumendis unikaalne. Meie näites esindab iga ID täpselt ühte töötajat. Kui kasutate MongoDB findOne’i objekti ID abil, saate täpselt soovitud tulemuse.
db.employee.findOne ( { _id : ObjectID ( "582pfh773813tw982qj411l0" ) } )shellVäljund näeb välja järgmine:
db.employee.findOne ( { _id : ObjectID ( "582pfh773813tw982qj411l0" ) } )
{
_id : ObjectID ( "582pfh773813tw982qj411l0"
name : "Cartwright",
gender : "Male",
age : 22,
year : 2022
}shellOtsimine konkreetsete väljade abil
Kui te ei tea ID-d või soovite oma kogust otsida muude parameetrite järgi, võite kasutada ka MongoDB findOne’i, et otsida konkreetseid välju. Kui parameetriga sobib ainult üks dokument, kuvatakse just see dokument. Kui aga teie otsingukriteeriumidele vastab mitu dokumenti, kuvab süsteem ainult esimese kirje.
Allpool toodud näites otsime kõik kirjed, mille sugu on „Mees”. Siin on käsk:
db.employee.findOne ( { gender : "Male" } )shellSelle kriteeriumiga vastab kaks kirjet, kuid kuvatakse ainult üks. Väljundis kuvatakse töötaja hr Brown:
db.employee.findOne ( { gender : "Male" } )
{
_id : ObjectID ( "498p0t173mv489fh63th00kh"
name : "Brown",
gender : "Male",
age : 40,
year : 2019
}shellOtsimine mitme välja abil
Teil on ka võimalus oma otsingut veelgi kitsendada, et vältida kattumisi. Meie väikese valimi puhul ei pruugi see olla vajalik, kuid kui töötate mitme sajandi või isegi tuhandete kirjetega, on see võimalus väga kasulik. MongoDB findOne võimaldab otsinguks kasutada mitut välja. Kui soovite töötajat identifitseerida soo (mees) ja vanuse järgi, võite kirjutada järgmist:
db.employee.findOne ( { gender : "Male", age: 40 } )shellVäljund näitab taas hr Browni, kes on kogus ainus meessoost isik ja 40-aastane. Pr Jones on sama vana, kuid tema sugu ei vasta kriteeriumidele, seega on tulemus järgmine:
db.employee.findOne ( { gender : "Male", age: 40 } )
{
_id : ObjectID ( "498p0t173mv489fh63th00kh"
name : "Brown",
gender : "Male",
age : 40,
year : 2019
}shellKuidas määrata tingimused väljale, kasutades MongoDB findOne
Samuti on võimalik määratleda tingimused konkreetsele väljale ja kasutada neid otsingukriteeriumidena. Järgmises näites otsime ainult üle 30-aastaseid töötajaid.
See kanne näeb välja järgmine:
db.employee.findOne ( { age : { $gt : 30 } } )shellSee välistab hr Cartwrighti. Kuna pr Smith on üle 30-aastane ja nimekirjas esimene, kuvatakse tulemusena tema:
db.employee.findOne ( { age : { $gt : 30 } } )
{
_id : ObjectID ( "529ete7300of4002bme148om" ),
name : "Smith",
gender : "Female",
age : 56,
year : 2002
}shellKuidas välistada väljad MongoDB findOne abil
Kui teil on ulatuslikud kogud, mis sisaldavad palju teavet, võib väljund sisaldada liiga palju teavet. Õnneks pakub MongoDB findOne ka võimalust väljundist väljajätta teatud väljad. Järgmises näites ei soovi me väljundis kuvada ID-d, sugu ja vanust.
db.employee.findOne ( { name : "Smith" }, { _id : 0, gender : 0, age : 0 } )shellSaate järgmise väljundi:
db.employee.findOne ( { name : "Smith" }, { _id : 0, gender : 0, age : 0 } )
{
name : "Smith",
year : 2002
}shellMis juhtub, kui MongoDB findOne ei leia minu otsingule ühtegi tulemust?
Kui MongoDB findOne-iga otsingutulemusi ei leita, kuvatakse ikkagi väljund. Selle illustreerimiseks otsime Ms. Larkhamit, kes ei ole kogus olemas.
db.employee.findOne ( { name : "Larkham" } )shellSelle väljund on:
db.employee.findOne ( { name : "Larkham" } )
nullshellTasuta GUI MongoDB Compass muudab andmebaasi haldamise lihtsamaks. Loe graafilise kasutajaliidese kohta lähemalt meie digitaalse juhendi teises artiklis.
c601ef95ac62761b8e3583955193ed29
5eba7ed8d4bd7730050a34ca3b643068
cade61e32364b18cfedf411338034385