Szukaj…


Składnia

  • mongodb: // [nazwa użytkownika: hasło @] host1 [: port1] [, host2 [: port2], ... [, hostN [: portN]]] [/ [baza danych] [? opcje]]

Parametry

Parametr Szczegół
hostX Opcjonalny. Możesz określić dowolną liczbę hostów. Można podać wiele hostów, na przykład dla połączeń z zestawami replik.
: portX Opcjonalny. Wartość domyślna to: 27017, jeśli nie została podana.
Baza danych Opcjonalny. Nazwa bazy danych do uwierzytelnienia, jeśli ciąg połączenia zawiera poświadczenia uwierzytelnienia Jeśli nie określono / baza danych, a ciąg połączenia zawiera poświadczenia, sterownik uwierzytelni się w bazie danych administratora.
? opcje Opcje specyficzne dla połączenia

Połącz się z MongoDB za pomocą 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()

Zapytania PyMongo

Po uzyskaniu obiektu collection zapytania używają tej samej składni, co w powłoce mongo. Niektóre niewielkie różnice to:

  • każdy klucz musi być ujęty w nawiasy. Na przykład:

    db.find({frequencies: {$exists: true}})
    

    zamienia się w pymongo (zwróć uwagę na True wielkimi literami):

    db.find({"frequencies": { "$exists": True }})
    
  • obiekty takie jak identyfikatory obiektów lub ISODate są manipulowane przy użyciu klas python. PyMongo używa swojej własnej klasy ObjectId do obsługi identyfikatorów obiektów, podczas gdy daty używają standardowego pakietu datetime . Na przykład, jeśli chcesz wysłać zapytanie do wszystkich zdarzeń między 2010 a 2011 rokiem, możesz:

     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 } }):
    

Zaktualizuj wszystkie dokumenty w kolekcji za pomocą PyMongo

Powiedzmy, że musisz dodać pole do każdego dokumentu w kolekcji.

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)

Metoda find zwraca Cursor , na którym można łatwo iterować za pomocą składni for in . Następnie wywołujemy metodę update , podając _id i dodamy pole ( $set ). Parametry upsert i multi pochodzą z mongodb ( zobacz tutaj, aby uzyskać więcej informacji ).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow