Поиск…


Синтаксис

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



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow