69.73K
Category: programmingprogramming

Интеграция MongoDB с Python

1.

Интеграция MongoDB с
Python
PyMongo
Начало работы с PyMongo
Команды PyMongo
Примеры

2.

Установка PyMongo
Импортируем модуль:
> pip install pymongo
# Создание клиента
client = pymongo.MongoClient('localhost', 27017)
# Подключаемся к базе данных
db = client['dbName']
# Устанавливаем коллекцию
collection = db['colName']

3.

Начало работы с PyMongo
https://www.mongodb.com/docs/drivers/pymongo/
API: https://pymongo.readthedocs.io/en/stable/api/index.html
Примеры:
https://pymongo.readthedocs.io/en/stable/tutorial.html

4.

Команды PyMongo
insert_one(data) – добавление документа
find(elements) – поиск документов
find_one(elements) – поиск документа
update_many(query, {"$set": new_values}) –
обновление документов
update_one(query, {"$set": new_values}) –
обновление документа
delete_many(query) – удаление документов
delete_one(query) – удаление документа

5.

Команды PyMongo
sort(atr) – сортировка по полю
count_documents(data) – количество
create_index(data) – создание индекса
insert_many(query) – добавление множества
документов (Bulk Inserts)

6.

Примеры
collection.insert_one({"title": "Matrix", "year": 1996})
collection.find({"year": 1996})
collection.update_one({"title": "Matrix"}, {"year": 1999})
collection.delete_one({"year": 1996})
collection.insertMany([
{"title": "Babe", "descr": "The pig film", "year": 1995},
{" title": "I Am Legend", "year": 2007}
])
collection.delete_many({"year": {"$gte": 2000}})
results = collection.find({})
for res in results:
print(res)

7.

Примеры агрегирования
collection.insert_many([
{"title": "Babe", "country": ["Australia", "USA"], "year": 1995},
{"title": "I Am Legend", "country": "USA", "year": 2007},
{"title": "Matrix", "country": "USA", "year": 1999},
{"title": "Amelie", "country": "France", "year": 2001}
])
# Количество фильмов, выпущенных после 2000 года
results = collection.count_documents({"year": {"$gt": 2000}})
print(results)

8.

Примеры агрегирования
collection.insert_many([
{"title": "Babe", "country": ["Australia", "USA"], "year": 1995},
{"title": "I Am Legend", "country": "USA", "year": 2007},
{"title": "Matrix", "country": "USA", "year": 1999},
{"title": "Amelie", "country": "France", "year": 2001}
])
# Среднее значение года выпуска по странам
results = collection.aggregate([
{"$match": {"country": "USA"}},
{"$group": {"_id": "$country", "avg_year": {"$avg": "$year"}}}
])
for res in results:
print(res)

9.

Примеры агрегирования
collection.insert_many([
{"title": "War and Peace", "author": "Tolstoy", "price": 2000},
{"title": "The Gadfly", "author": "Voynich", "price": 3000}
])
# Общая стоимость книг
results = collection.aggregate([
{"$match": {}},
{"$group": {"_id": "all books", "total cost": {"$sum": "$price"}}}
])
for res in results:
print(res)

10.

Лабораторная работа 5
1. Создать список фильмов с полями: title
(название), year, country.
2. Вывести год выхода фильма по его
названию.
3. Подсчитать количество кинофильмов по
странам. Результат вывести вместе с
названием страны.
4. Вывести названия фильмов, вышедших не
позднее чем за год до выхода последнего
кинофильма.
English     Русский Rules