11 МонгоДБ упита и операција које морате знати

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.