MongoDB
Драйвер Python
Поиск…
Синтаксис
- MongoDB: // [имя пользователя: пароль @] host1 [: port1] [, host2 [: port2], ... [, hostN [: portN]]] [? / [БД] [опции]]
параметры
| параметр | подробность |
|---|---|
| hostX | Необязательный. Вы можете указать столько хостов, сколько необходимо. Вы должны указать несколько хостов, например, для соединений с наборами реплик. |
| : PortX | Необязательный. Значение по умолчанию: 27017, если не указано. |
| база данных | Необязательный. Имя базы данных для аутентификации, если строка подключения включает аутентификацию credentialsIf / database не указана, а строка подключения включает учетные данные, драйвер будет аутентифицироваться в базе данных администратора. |
| ?опции | Параметры подключения |
Подключитесь к MongoDB, используя pymongo
from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)
db = client['test_db']
# or
# db = client.test_db
# collection = db['test_collection']
# or
collection = db.test_collection
collection.save({"hello":"world"})
print collection.find_one()
Запросы PyMongo
После того как вы получили объект collection , запросы используют тот же синтаксис, что и в оболочке mongo. Некоторые незначительные отличия:
каждый ключ должен быть заключен в скобки. Например:
db.find({frequencies: {$exists: true}})становится в
pymongo(обратите внимание наTrueв верхнем регистре):db.find({"frequencies": { "$exists": True }})объекты, такие как идентификаторы объектов или
ISODate, обрабатываются с использованием классов python. PyMongo использует свой собственный классObjectIdдля работы с идентификаторами объектов, а даты используют стандартный пакетdatetime. Например, если вы хотите запросить все события в период между 2010 и 2011 годами, вы можете сделать следующее:from datetime import datetime date_from = datetime(2010, 1, 1) date_to = datetime(2011, 1, 1) db.find({ "date": { "$gte": date_from, "$lt": date_to } }):
Обновление всех документов в коллекции с помощью PyMongo
Предположим, вам нужно добавить поле к каждому документу в коллекции.
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.mydb.mycollection
for doc in db.find():
db.update(
{'_id': doc['_id']},
{'$set': {'newField': 10} }, upsert=False, multi=False)
Метод find возвращает Cursor , на котором вы можете легко перебирать его с помощью синтаксиса for in . Затем мы вызываем метод update , указав _id и добавляем поле ( $set ). Параметры upsert и multi поступают от mongodb ( см. Здесь для получения дополнительной информации ).