7. Как работать с MongoDB через Python: мощная тренировка навыков 💪
PyMongo + MongoDB: мощная тренировка навыков 💪
1. Основы: подключение к MongoDB
- Установи библиотеку
pymongo
- Подключись к своему кластеру с помощью
connection string
- Выбери тестовую базу данных (sample) или создай новую
- Выбери
коллекцию
для работы с документами
Примеры с кодом
python
from pymongo import MongoClient
# Подключиться к кластеру
client = MongoClient('твой_connection_string')
# Выбрать базу данных (их может быть много)
db = client['mydatabase']
# Выбрать коллекцию
collection = db['mycollection']
# Теперь можно работать с данными
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Справился? Круто! Переходим к поиску информации.
2. Поиск данных в коллекции
- Научись находить документ
по критерию
: имени / id / чему угодно (метод find_one) - Научись находить
много документов
по заданному критерию (find) - Убедись, что всё работает: выведи найденные документы в терминал
- Проверь листик в VS Code - тот самый плагин для MongoDB. Не забудь refresh'нуть его
Примеры с кодом
python
# 1) Поиск по критерию
result = collection.find_one({'name': 'Alice'})
print(result)
# 2) age is greater than 25
result = collection.find_one({'age': {'$gt': 25}})
print(result)
# 3) find all
results = collection.find({'city': 'New York'})
for doc in results:
print(doc)
# 4) find all + filter
results = collection.find({'age': {'$lt': 30}})
for doc in results:
print(doc)
# 5) find all + sort
results = collection.find().sort('age', -1)
for doc in results:
print(doc)
# 6) limit response
results = collection.find().limit(3)
for doc in results:
print(doc)
# 7) Несколько критериев
results = collection.find({}, {'_id': 0, 'name': 1, 'city': 1})
for doc in results:
print(doc)
# 8) Можно даже искать регулярками
results = collection.find({'name': {'$regex': '^C'}})
for doc in results:
print(doc)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Всё окей? Двигаемся к записи данных
3. Записываем данные в БД
Вставь
новый документ в коллекцию (insert_one)- Вставь несколько документов в коллекцию (insert_many)
- Проверь изменения в БД в листике в VS Code
Примеры с кодом
python
# 2) insert_one
document = {'name': 'Frank', 'age': 40, 'city': 'Boston'}
result = collection.insert_one(document)
print(f'Inserted document ID: {result.inserted_id}')
# 2) insert_many
documents = [
{'name': 'Grace', 'age': 32, 'city': 'Seattle'},
{'name': 'Heidi', 'age': 29, 'city': 'Denver'},
{'name': 'Ivan', 'age': 45, 'city': 'Austin'}
]
result = collection.insert_many(documents)
print(f'Inserted document IDs: {result.inserted_ids}')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Круто! На очереди обновление и удаление данных
4. Обновляем и удаляем данные в БД
Обнови
любой документ из коллекции- Теперь попробуй
одним махом
сделать тоже с несколькими документами - Получилось? Теперь
удали
любой документ из коллекции - Научи чистить коллекцию: удали все документы из коллекции
- Убедись, что всё сработало
Примеры с кодом
python
# 1) update one where name is Alice
result = collection.update_one({'name': 'Alice'}, {'$set': {'age': 32}})
print(f'Matched documents: {result.matched_count}, Modified documents: {result.modified_count}')
# 2) increment age where name is 'Bob'
result = collection.update_one({'name': 'Bob'}, {'$inc': {'age': 1}})
print(f'Matched documents: {result.matched_count}, Modified documents: {result.modified_count}')
# 3) update all where city is New York
result = collection.update_many({'city': 'New York'}, {'$set': {'status': 'active'}})
print(f'Matched documents: {result.matched_count}, Modified documents: {result.modified_count}')
# 4) delete one
result = collection.delete_one({'name': 'Charlie'})
print(f'Deleted documents: {result.deleted_count}')
# 5) delete many
result = collection.delete_many({'city': 'San Francisco'})
print(f'Deleted documents: {result.deleted_count}')
# 6) Интересно, а как удалить все одним махом?
🤔
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Итог
Фух! Это была мощная тренировка, скажи? Но ты справился(ась)! Держи медальку: 🥇
Кстати, я тут как раз приготовил для тебя бонус: 🎁. Ты найдёшь его в следующем уроке.