MongoDb: драйвер Python
Вступление
Дистрибутив PyMongo содержит инструменты для взаимодействия с базой данных MongoDB из Python. В этом руководстве рассматривается установка PyMongo в различных операционных системах, подключение и основные операции с базой данных, такие как вставка, обновление, удаление и поиск с помощью PyMongo.
Установка с помощью пипа
pip - это инструмент для установки и управления пакетами Python. Используйте pip для установки PyMongo на платформах, отличных от Windows.
$ pip install pymongo
Чтобы получить конкретную версию pymongo:
$ pip install pymongo==2.6.3
Чтобы обновить с помощью pip:
$ pip install --upgrade pymongo
Установка с помощью easy_install
Setuptools обеспечивает загрузку, сборку, установку, обновление и удаление пакетов Python. Чтобы использовать easy_install из setuptools, выполните:
$ easy_install pymongo
Для обновления сделайте:
$ easy_install -U pymongo
Установщики MS Windows
Дистрибутив PyMongo в Windows поддерживается и тестируется на Python 2.x (где x> = 4) и Python 3.x (где x> = 1). Версии PyMongo <= 1.3 также поддерживают Python 2.3, но это больше не поддерживается.
Перед установкой драйвера в Windows:
- Для завершения установки могут потребоваться права root или администратора.
- Перед установкой дистрибутива Python в вашей системе включите python.exe в параметре Windows% PATH% (переменная среды пути) или добавьте его вручную, если он не включен.
Установка драйвера для Windows:
Выберите и загрузите установочные пакеты MSI отсюда согласно вашему требованию.
Работа с MongoDB и PyMongo
Мы предполагаем, что экземпляр MongoDB работает на хосте и порту по умолчанию. Перед началом убедитесь, что у вас установлен дистрибутив PyMongo. В оболочке Python следующее должно выполняться без исключения:
>>> import pymongo
>>>
Установление соединения с MongoClient
Чтобы создать MongoClient для работающего экземпляра mongod, выполните следующий код:
>>> from pymongo import MongoClient
>>> client = MongoClient()
Приведенный выше код будет подключаться к хосту и порту по умолчанию.
Вы можете указать хост и порт явно, как показано ниже:
>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)
Вы также можете использовать формат URI MongoDB:
>>> from pymongo import MongoClient
>>> client = MongoClient('mongodb://localhost:27017/')
Получение базы данных
Один экземпляр MongoDB может поддерживать несколько независимых баз данных. Вот команда:
>>> db = client.testdb
или (используя доступ в стиле словаря):
>>> db = client['testdb']
Вставить документ
Чтобы вставить документ в коллекцию, вы можете использовать метод insert (). Когда документ вставлен, автоматически добавляется специальный ключ «_id», если в документе еще нет ключа «_id». Значение «_id» должно быть уникальным для всей коллекции. insert () возвращает значение "_id" для вставленного документа.
>>> import pymongo
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.testdb
>>> student1 = {"name": "Arun",
"classid": 'V',
"rollno": 1}
>>> students = db.students
>>> students_id = students.insert(student1)
>>> students_id
ObjectId('548c02cd838d1f11b0d17d52')
>>>
Добавьте еще две записи:
>>> student2 = {"name": "David",
"classid": 'V',
"rollno": 2}
>>> student3 = {"name": "Shekhar",
"classid": 'V',
"rollno": 3}
>>> students = db.students
>>> students_id = students.insert(student2)
>>> students_id = students.insert(student3)
Найти документ
Метод find_one () возвращает один документ, соответствующий запросу (или ни один, если совпадений нет). Это полезно, когда вы знаете, что есть только один соответствующий документ. Здесь метод find_one () используется для получения первого документа из коллекции студентов:
>>> import pymongo
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.testdb
>>> students = db.students
>>> students.find_one()
{'classid': 'V', '_id': ObjectId('548c02cd838d1f11b0d17d52'), 'name': 'Arun', 'rollno': 1}
>>>
Возвращенный документ содержит «_id», который был автоматически добавлен при вставке.
Найти конкретный документ:
Метод find_one () также поддерживает запросы к определенным элементам, которым должен соответствовать полученный документ. Пусть обыскивают ученика "Шехар".
>>> import pymongo
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.testdb
>>> students = db.students
>>> students.find_one({"name": "Shekhar"})
{'classid': 'V', '_id': ObjectId('548c058a838d1f11b0d17d54'), 'name': 'Shekhar', 'rollno': 3}
>>>
Вы также можете найти студента по его _id, который в нашем примере является ObjectId.
Запрос нескольких документов
Чтобы получить более одного документа в результате запроса, мы используем метод find (). find () возвращает экземпляр курсора, который позволяет нам перебирать все соответствующие документы. Например, мы можем перебрать каждый документ в коллекции студентов:
>>> import pymongo
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.testdb
>>> students = db.students
>>> for student in students.find():
student
{'classid': 'V', '_id': ObjectId('548c02cd838d1f11b0d17d52'), 'name': 'Arun', 'rollno': 1}
{'classid': 'V', '_id': ObjectId('548c0584838d1f11b0d17d53'), 'name': 'David', 'rollno': 2}
{'classid': 'V', '_id': ObjectId('548c058a838d1f11b0d17d54'), 'name': 'Shekhar', 'rollno': 3}
>>>
Запросы диапазона
Вы можете использовать запрос, чтобы получить набор документов из нашей коллекции. Например, если вы хотите получить все документы, где «rollno»> = 2, код будет:
>>> import pymongo
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.testdb
>>> students = db.students
>>> for student in students.find({"rollno": {"$gte": 2}}):
print(student)
{'classid': 'V', '_id': ObjectId('548c0584838d1f11b0d17d53'), 'name': 'David', 'rollno': 2}
{'classid': 'V', '_id': ObjectId('548c058a838d1f11b0d17d54'), 'name': 'Shekhar', 'rollno': 3}
>>>
Считать документы
Используя операцию count (), вы можете подсчитать количество документов в коллекции.
>>> students.count()
3
>>>
Обновить конкретный документ
Вы можете редактировать конкретный документ с помощью операции update ().
>>> students.find_one({"name": "Shekhar"})
{'classid': 'V', '_id': ObjectId('548c058a838d1f11b0d17d54'), 'name': 'Shekhar', 'rollno': 3}
>>> students.update({"name": "Shekhar"}, {'$set':{'rollno': 12}})
{'updatedExisting': True, 'nModified': 1, 'ok': 1, 'n': 1}
>>> students.find_one({"name": "Shekhar"})
{'classid': 'V', '_id': ObjectId('548c058a838d1f11b0d17d54'), 'name': 'Shekhar', 'rollno': 12}
>>>
Удалить конкретный документ
Вы можете удалить конкретный документ, используя операцию удаления ().
>>> students.remove({"rollno": 12})
{'ok': 1, 'n': 1}
>>> for student in students.find():
student
{'classid': 'V', '_id': ObjectId('548c02cd838d1f11b0d17d52'), 'name': 'Arun', 'rollno': 1}
{'classid': 'V', '_id': ObjectId('548c0584838d1f11b0d17d53'), 'name': 'David', 'rollno': 2}
>>>
Предыдущий: Java Драйвер
Далее: PHP Драйвер
Новый контент: Composer: менеджер зависимостей для PHP , R программирования