Kas ir MongoDB findOne un kā to lietot
MongoDB findOne metode ir lieliska kolekcijas meklēšanai. Tomēr tā atgriež tikai vienu rezultātu, tāpēc tā nav piemērota daudzu veidu meklējumiem.
Kas ir MongoDB findOne?
MongoDB ir datu bāzes pārvaldības sistēma, kas, pateicoties NoSQL pieejai un ievērojamai mērogojamībai, var viegli uzglabāt un pārvaldīt lielus datu apjomus. Lai gan šie aspekti piedāvā lietotājiem nozīmīgas priekšrocības, tas nozīmē arī to, ka sistēmai ir nepieciešamas spēcīgas metodes, lai nodrošinātu lietotājiem efektīvu navigāciju datu bāzē.
Sistēma saglabā visa veida datus BSON dokumenta (binārā JSON) formātā un apvieno šos dokumentus kolekcijās. Ja vēlaties meklēt un izvadīt vienu no šiem dokumentiem, jums ir pieejamas vairākas iespējas. Papildus vispārīgākajai meklēšanas metodei MongoDB find, MongoDB findOne ir ļoti efektīva metode, lai precīzi filtrētu lielas datu bāzes.
MongoDB findOne meklē visus dokumentus un kolekcijas atbilstoši noteiktiem lietotāja norādītiem kritērijiem. Šīs metodes īpaša iezīme ir tā, ka tā vienmēr atgriež tieši vienu dokumentu. Ja meklēšanas vaicājumā ir tikai viens dokuments, šis dokuments tiks atgriezts. Ja vairāki dokumenti atbilst lietotāja definētajiem parametriem, MongoDB findOne atgriezīs dokumentu, kas parādās pirmais datu bāzes dabiskajā secībā. Ja meklēšanā nevar atrast nevienu dokumentu, izvade ir “null”.
Kāda ir MongoDB findOne sintakse?
MongoDB findOne pamat sintakse ir vienkārša. Metode tiek izmantota šādi:
db.collection.findOne ( <query>, <projection>, <options> )shellSadaļā <query> varat norādīt, kā metodei jāfiltrē dokumenti.
Sadaļā <projection> varat norādīt, kuri lauki jāparāda atgrieztā dokumentā. Lai norādītu, vai lauks jāiekļauj, izmantojiet Boole’a vērtības 1 (patiesība/iekļaut) un 0 (nepatiesība/neiekļaut). Ja šis parametrs paliek tukšs, tiks parādīti visi lauki.
Trešais meklēšanas parametrs <options> ļauj jums turpināt modificēt meklēšanu un mainīt attēlojumu. Visi trīs meklēšanas parametri ir fakultatīvi.
Kā izveidot kolekciju testēšanas nolūkos
Ja esat instalējis MongoDB Linux, Windows vai Mac operētājsistēmā un vēlaties izmantot MongoDB findOne, ir vērts izveidot testa vidi, lai eksperimentētu ar šo metodi.
Ja vēl neesat izveidojis datu bāzi, izlasiet mūsu izsmeļošo MongoDB apmācību, lai uzzinātu, kā to izveidot. Turpmākajā piemērā izmantosim darbinieku datu bāzi, kurā ir pieci ieraksti. Katrs ieraksts satur informāciju par darbinieka vārdu, dzimumu un vecumu, kā arī par to, cik ilgi šī persona strādā uzņēmumā. Kolekcija izskatās šādi:
# 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
}
]
)shellKādi ir dažādie veidi, kā veikt meklēšanu ar Mongo DB findOne?
Ir vairāk nekā viens veids, kā meklēt informāciju, izmantojot MongoDB findOne. Jūs varat meklēt bez parametriem, ar ID, ar vienu lauku vai ar vairākiem laukiem.
Meklēšana bez parametriem
Ja izmantojat MongoDB findOne metodi bez parametriem, sistēma veiks meklēšanu datu bāzē un ņems vērā visus ierakstus. Mūsu piemērā tas nozīmē, ka metode identificēs piecus ierakstus. Tā kā neviens no dokumentiem netiek izslēgts un metode atgriež tikai vienu rezultātu, MongoDB findOne izvēlēsies pirmo personu, kas tika ievadīta datu bāzē.
db.employee.findOne ( )shellRezultāts ir:
db.employee.findOne ( )
{
_id : ObjectID ( "529ete7300of4002bme148om" ),
name : "Smith",
gender : "Female",
age : 56,
year : 2002
}shellMeklēšana pēc identifikācijas numura
Parasti jūs vēlaties norādīt kādus meklēšanas kritērijus, lai atrastu tieši to dokumentu, kas jums ir nepieciešams. Viens no veidiem, kā meklēt dokumentus ar MongoDB findOne, ir meklēt pēc ID.
Lauciņš _id ir unikāls katrā dokumentā. Mūsu piemērā katrs ID attēlo tieši vienu darbinieku. Ja izpildāt MongoDB findOne, izmantojot objekta ID, iegūsiet tieši to rezultātu, ko meklējat.
db.employee.findOne ( { _id : ObjectID ( "582pfh773813tw982qj411l0" ) } )shellRezultāts izskatās šādi:
db.employee.findOne ( { _id : ObjectID ( "582pfh773813tw982qj411l0" ) } )
{
_id : ObjectID ( "582pfh773813tw982qj411l0"
name : "Cartwright",
gender : "Male",
age : 22,
year : 2022
}shellMeklēšana, izmantojot konkrētus laukus
Ja nezināt ID vai vēlaties meklēt savā kolekcijā pēc citiem parametriem, varat izmantot arī MongoDB findOne, lai meklētu konkrētus laukus. Ja ir tikai viens dokuments, kas atbilst parametram, tiks parādīts tieši šis dokuments. Tomēr, ja vairāki dokumenti atbilst jūsu meklēšanas kritērijiem, sistēma parādīs tikai pirmo ierakstu.
Zemāk redzamajā piemērā mēs meklēsim visus ierakstus, kuros dzimums ir norādīts kā „Vīrietis”. Šī ir komanda:
db.employee.findOne ( { gender : "Male" } )shellIr divi ieraksti, kas atbilst šiem kritērijiem, taču tiks parādīts tikai viens. Rezultātā tiek parādīts darbinieks Mr. Brown:
db.employee.findOne ( { gender : "Male" } )
{
_id : ObjectID ( "498p0t173mv489fh63th00kh"
name : "Brown",
gender : "Male",
age : 40,
year : 2019
}shellMeklēšana, izmantojot vairākus laukus
Jums ir arī iespēja vēl vairāk sašaurināt meklēšanu, lai novērstu pārklāšanos. Tas var nebūt nepieciešams mūsu nelielajai paraugu kolekcijai, bet, ja jūs strādājat ar vairākiem simtiem vai pat tūkstošiem ierakstu, šī opcija ir ļoti noderīga. MongoDB findOne ļauj meklēšanai izmantot vairākus laukus. Ja vēlaties identificēt darbinieku pēc dzimuma (vīrietis) un vecuma, varat uzrakstīt šādi:
db.employee.findOne ( { gender : "Male", age: 40 } )shellRezultāts atkal parāda, ka vienīgais vīrietis kolekcijā ir 40 gadus vecais kungs Brauns. Jones kundze ir tāda paša vecuma, bet viņas dzimums neatbilst kritērijiem, tāpēc rezultāts izskatās šādi:
db.employee.findOne ( { gender : "Male", age: 40 } )
{
_id : ObjectID ( "498p0t173mv489fh63th00kh"
name : "Brown",
gender : "Male",
age : 40,
year : 2019
}shellKā iestatīt nosacījumus laukam, izmantojot MongoDB findOne
Ir arī iespējams definēt nosacījumus konkrētam laukam un izmantot tos kā meklēšanas kritērijus. Turpmākajā piemērā mēs meklējam tikai darbiniekus, kuri ir vecāki par 30 gadiem.
Šis ieraksts izskatās šādi:
db.employee.findOne ( { age : { $gt : 30 } } )shellTas izslēdz Cartwright kungu. Tā kā Smith kundze ir vecāka par 30 gadiem un ir pirmā persona sarakstā, viņa parādās kā rezultāts:
db.employee.findOne ( { age : { $gt : 30 } } )
{
_id : ObjectID ( "529ete7300of4002bme148om" ),
name : "Smith",
gender : "Female",
age : 56,
year : 2002
}shellKā izslēgt laukus ar MongoDB findOne
Ja jums ir plašas kolekcijas, kas satur daudz informācijas, izvade var ietvert pārāk daudz informācijas. Par laimi, MongoDB findOne piedāvā arī iespēju izslēgt laukus no izvades. Turpmākajā piemērā mēs nevēlamies izvadē parādīt ID, dzimumu un vecumu.
db.employee.findOne ( { name : "Smith" }, { _id : 0, gender : 0, age : 0 } )shellJūs saņemsiet šādu rezultātu:
db.employee.findOne ( { name : "Smith" }, { _id : 0, gender : 0, age : 0 } )
{
name : "Smith",
year : 2002
}shellKas notiek, ja MongoDB findOne nevar atrast nekādus rezultātus manai meklēšanai?
Ja meklēšana ar MongoDB findOne nedod rezultātus, izvade joprojām tiks parādīta. Lai ilustrētu, kas notiek, meklēsim Ms. Larkham, kura nav kolekcijā.
db.employee.findOne ( { name : "Larkham" } )shellRezultāts ir šāds:
db.employee.findOne ( { name : "Larkham" } )
nullshellBezmaksas GUI MongoDB Compass atvieglo datu bāzes pārvaldību. Lasiet par grafisko lietotāja interfeisu citā rakstā mūsu digitālajā ceļvedī.
c601ef95ac62761b8e3583955193ed29
5eba7ed8d4bd7730050a34ca3b643068
cade61e32364b18cfedf411338034385
67bc20db06931714cd37111cf4d09dbe