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 ( см. Здесь для получения дополнительной информации ).