MongoDB se ističe kao jedna od najtraženijih i najcenjenijih NoSQL baza podataka u profesionalnom svetu razvoja softvera. Njena prilagodljivost, skalabilnost i sposobnost obrade velikih količina podataka čine je odličnim izborom za savremene aplikacije. Ukoliko želite da steknete majstorstvo u izvođenju uobičajenih upita i operacija u MongoDB, nalazite se na pravom mestu.
VIDEO DANA MUO
POMERITE SE DA BISTE NASTAVILI SA SADRŽAJEM
Bilo da je vaš cilj efikasno preuzimanje i manipulisanje podacima, implementacija pouzdanih modela podataka, ili kreiranje brzih aplikacija, temeljno razumevanje čestih MongoDB upita i operacija nesumnjivo će unaprediti vaše veštine.
2. Kreiranje ili prebacivanje baza podataka
Lokalno kreiranje baze podataka putem MongoDB Shell-a je jednostavan proces, posebno ako ste konfigurisali udaljeni klaster. Možete stvoriti novu bazu podataka u MongoDB koristeći komandu use:
use db_name
Iako gornja komanda stvara novu bazu podataka, možete je koristiti i za prelazak na već postojeću bazu podataka, bez potrebe za kreiranjem nove od nule.
2. Brisanje baze podataka
Prvo, pređite na bazu podataka koju želite obrisati koristeći komandu use
, kao što je prethodno opisano. Zatim izbrišite bazu podataka pomoću komande dropDatabase()
:
use db_name
db.dropDatabase()
3. Kreiranje kolekcije
Da biste kreirali kolekciju, pređite na željenu bazu podataka. Koristite ključnu reč createCollection()
da biste stvorili novu MongoDB kolekciju:
db.createCollection("collection_name")
Zamenite collection_name
sa nazivom vaše kolekcije.
4. Umetanje dokumenta u kolekciju
Prilikom slanja podataka u kolekciju, možete umetnuti jedan dokument ili niz dokumenata.
Za umetanje jednog dokumenta:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Takođe možete koristiti gornji metod za umetanje niza dokumenata sa jednim ID-om:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
Da biste umetnuli više dokumenata odjednom, od kojih svaki ima zasebne ID-ove, koristite ključnu reč insertMany
:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. Preuzimanje svih dokumenata iz kolekcije
Možete pretražiti sve dokumente iz kolekcije koristeći ključnu reč find()
:
db.collection_name.find()
Gore navedeno vraća sve dokumente unutar date kolekcije:
Takođe možete ograničiti vraćene podatke na određeni broj. Na primer, možete koristiti sledeću komandu da biste dobili samo prva dva dokumenta:
db.collection_name.find().limit(2)
6. Filtriranje dokumenata u kolekciji
Postoji mnogo načina za filtriranje dokumenata u MongoDB. Uzmite u obzir sledeće podatke, na primer:
Ako tražite samo određeno polje u dokumentu, koristite metod find
:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
Gore navedeno vraća sve dokumente u kojima je vrednost lajkova „Wordle“. Izlazi samo imena i ignoriše ID dokumenta.
Takođe možete filtrirati kolekciju po numeričkom faktoru. Recimo da želite da dobijete imena svih korisnika starijih od 21 godine, koristite operator $gt
:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Izlaz izgleda ovako:
Pokušajte da zamenite find
sa findOne
da vidite šta se dešava. Međutim, postoji mnogo drugih ključnih reči za filtriranje:
$lt
: Sve vrednosti manje od navedene.$gte
: Vrednosti jednake ili veće od navedene.$lte
: Vrednosti koje su manje ili jednake definisanoj.$eq
: Dobija sve vrednosti jednake navedenoj.$ne
: Sve vrednosti nisu jednake navedenoj.$in
: Koristite ovo kada postavljate upite na osnovu niza. Dobija sve vrednosti koje odgovaraju bilo kojoj od stavki u nizu. Ključna reč$nin
radi suprotno.
7. Sortiranje upita
Sortiranje pomaže da se upit uredi određenim redosledom. Možete sortirati u opadajućem ili rastućem redosledu. Imajte na umu da sortiranje zahteva numeričku referencu.
Na primer, da sortirate u rastućem redosledu:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
Da biste sortirali gornji upit u opadajućem redosledu, zamenite „1“ sa „-1“.
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. Ažuriranje dokumenta
Ažuriranja MongoDB-a zahtevaju od atomskih operatora da navedu kako želite da se ažuriranje izvrši. Evo liste najčešće korišćenih atomskih operatora koje možete upariti sa upitom za ažuriranje:
$set
: Dodajte novo polje ili promenite postojeće polje.$push
: Umetnite novu stavku u niz. Uparite ga sa operatorom$each
da biste ubacili više stavki odjednom.$pull
: Uklonite stavku iz niza. Koristite ga sa$in
da biste uklonili mnogo stavki odjednom.$unset
: Uklonite polje iz dokumenta.
Da biste ažurirali dokument i dodali novo polje, na primer:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})
Gore navedeno ažurira navedeni dokument kao što je prikazano:
Uklanjanje polja e-pošte je jednostavno pomoću operatora $unset
:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Uzmite u obzir sledeće uzorke podataka:
Možete da ubacite stavku u polje postojećeg niza stavki pomoću operatora $push
:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Evo izlaza:
Koristite operator $each
da ubacite više stavki odjednom:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
Evo izlaza:
Kao što je pomenuto, operator $pull
uklanja stavku iz niza:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
Ažurirani podaci izgledaju ovako:
Uključite ključnu reč $in
da biste uklonili mnoge stavke u nizu odjednom:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. Brisanje dokumenta ili polja
Ključna reč deleteOne
ili deleteMany
odbacuje dokument iz kolekcije. Koristite deleteOne
da uklonite dokument na osnovu navedenog polja:
db.collection_name.deleteOne({"Name":"IDNoble"})
Ako želite da izbrišete mnogo dokumenata sa zajedničkim ključevima, umesto toga koristite deleteMany
. Upit ispod briše sve dokumente koji sadrže „šah“ kao lajkove.
db.collection.deleteMany({"Likes":"Chess"})
10. Operacija indeksiranja
Indeksiranje poboljšava performanse upita pojednostavljujući broj dokumenata koje MongoDB treba da skenira. Često je najbolje kreirati indeks za polja koja češće postavljate u upite.
MongoDB indeksiranje je slično načinu na koji koristite indekse za optimizaciju SQL upita. Na primer, da biste kreirali rastući indeks u polju „Ime“:
db.collection.createIndex({"Name":1})
Da biste naveli svoje indekse:
db.collection.getIndexes()
Gore navedeno je samo preambula. Postoji nekoliko drugih metoda za kreiranje indeksa u MongoDB.
11. Agregacija
Agregacioni cevovod, poboljšana verzija MapReduce-a, omogućava vam da pokrećete i čuvate složene proračune iz MongoDB-a. Za razliku od MapReduce-a, koji zahteva pisanje mape i funkcije redukcije u zasebnim JavaScript funkcijama, agregacija je jednostavna i koristi samo ugrađene MongoDB metode.
Uzmite u obzir sledeće podatke o prodaji, na primer:
Koristeći MongoDB-ovu agregaciju, možete izračunati i uskladištiti ukupan broj prodatih proizvoda za svaku kategoriju na sledeći način:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Gornji upit vraća sledeće:
Majstor MongoDB upita
MongoDB nudi mnoge metode upita, uključujući funkcije za poboljšanje performansi upita. Bez obzira na vaš programski jezik, gore navedene strukture upita su rudimentarne za interakciju sa MongoDB bazom podataka.
Ipak, mogu postojati neka neslaganja u osnovnoj sintaksi. Na primer, dok neki programski jezici kao što je Python prepoznaju slučajeve zmije, drugi, uključujući JavaScript, koriste slučaj kamile. Obavezno istražite šta radi za odabranu tehnologiju.