Conținut curs
Python Avansat
Despre lecție

Obiective

În această lecție, veți învăța:

  1. O introducere în bazele de date NoSQL și MongoDB
  2. Ce este PyMongo și de ce este important
  3. Conectarea la baze de date și gestionarea colecțiilor
  4. Crearea, citirea, actualizarea și ștergerea documentelor cu PyMongo
  5. Interogări avansate și indexare

1. Introducere în bazele de date NoSQL și MongoDB

Bazele de date NoSQL (Not Only SQL) sunt un tip de bază de date care nu se bazează pe modelul relațional și nu folosesc limbajul SQL pentru interogare. În schimb, ele oferă o varietate de modele de date și mecanisme de interogare. Bazele de date NoSQL sunt deseori folosite în cazuri în care performanța, scalabilitatea și flexibilitatea sunt critice.

MongoDB este o bază de date NoSQL populară care folosește modelul orientat pe documente pentru a stoca și interoga datele. În MongoDB, datele sunt stocate în colecții de documente, care sunt similare cu înregistrările dintr-o bază de date relațională, dar pot avea structuri flexibile și ierarhice.

2. Ce este PyMongo și de ce este important

PyMongo este o bibliotecă Python care oferă un set complet de instrumente pentru a lucra cu MongoDB. PyMongo permite programatorilor să interacționeze cu baze de date MongoDB într-un mod simplu și Pythonic, fără a fi nevoie să învețe un nou limbaj de interogare sau să se ocupe de complexitatea gestionării conexiunilor și a comunicării cu serverul de baze de date.

Pentru a începe lucrul cu PyMongo, trebuie să îl instalați:

pip install pymongo

3. Conectarea la baze de date și gestionarea colecțiilor

3.1. Conectarea la o bază de date

Pentru a vă conecta la o bază de date MongoDB cu PyMongo, trebuie să creați un obiect MongoClient, care va gestiona conexiunea și comunicarea cu baza de date.

python
from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/")

3.2. Gestionarea colecțiilor

Pentru a lucra cu colecții în MongoDB, puteți accesa baza de date și colecția dorită folosind atributele obiectului MongoClient.

python
db = client.example_db
collection = db.example_collection

4. Crearea, citirea, actualizarea și ștergerea documentelor cu PyMongo

4.1. Inserarea documentelor

Pentru a insera documente într-o colecție, puteți utiliza metoda insert_one sau insert_many.

python
doc = {"name": "Jane", "age": 30}
result = collection.insert_one(doc)
print(result.inserted_id)

docs = [{"name": "John", "age": 25}, {"name": "Alice", "age": 35}]
result = collection.insert_many(docs)
print(result.inserted_ids)

4.2. Căutarea documentelor

Pentru a căuta documente într-o colecție, puteți utiliza metoda find sau find_one.

python
# Obținerea tuturor documentelor din colecție
docs = collection.find()

# Obținerea primului document care îndeplinește o condiție
doc = collection.find_one({"name": "Jane"})

# Obținerea tuturor documentelor care îndeplinesc o condiție
docs = collection.find({"age": {"$gt": 25}})

4.3. Actualizarea documentelor

Pentru a actualiza documente într-o colecție, puteți utiliza metoda update_one, update_many, replace_one sau find_one_and_update.

python
# Actualizarea primului document care îndeplinește o condiție
result = collection.update_one({"name": "Jane"}, {"$set": {"age": 31}})
print(result.modified_count)

# Actualizarea tuturor documentelor care îndeplinesc o condiție
result = collection.update_many({"age": {"$gt": 25}}, {"$inc": {"age": 1}})
print(result.modified_count)

# Înlocuirea primului document care îndeplinește o condiție
result = collection.replace_one({"name": "Jane"}, {"name": "Jane", "age": 32})
print(result.modified_count)

# Căutarea și actualizarea primului document care îndeplinește o condiție
doc = collection.find_one_and_update({"name": "John"}, {"$set": {"age": 26}})

4.4. Ștergerea documentelor

Pentru a șterge documente dintr-o colecție, puteți utiliza metoda delete_one, delete_many sau find_one_and_delete.

python
# Ștergerea primului document care îndeplinește o condiție
result = collection.delete_one({"name": "Jane"})
print(result.deleted_count)

# Ștergerea tuturor documentelor care îndeplinesc o condiție
result = collection.delete_many({"age": {"$gt": 25}})
print(result.deleted_count)

# Căutarea și ștergerea primului document care îndeplinește o condiție
doc = collection.find_one_and_delete({"name": "John"})

5. Interogări avansate și indexare

5.1. Interogări avansate

MongoDB oferă un set bogat de operatori de interogare pentru a crea interogări complexe și a obține documentele dorite.

python
# Obținerea documentelor cu un câmp specific
docs = collection.find({"email": {"$exists": True}})

# Obținerea documentelor care îndeplinesc condiții logice
docs = collection.find({"$or": [{"age": {"$lt": 20}}, {"age": {"$gt": 50}}]})

# Obținerea documentelor cu valori dintr-o listă
docs = collection.find({"name": {"$in": ["Jane", "John"]}})

5.2. Indexare

Indexarea în MongoDB poate îmbunătăți performanța interogărilor și vă permite să impuneți restricții unice pe documente.

python
# Crearea unui index simplu
collection.create_index("name")

# Crearea unui index compus
collection.create_index([("name", 1), ("age", -1)])

# Crearea unui index unic
collection.create_index("email", unique=True)

În acest tutorial, ați învățat despre bazele de date NoSQL și MongoDB, despre biblioteca PyMongo și cum să vă conectați la baze de date și să gestionați colecțiile. De asemenea, ați învățat cum să creați, să citiți, să actualizați și să ștergeți documente în MongoDB și cum să efectuați interogări avansate și indexare.