MongoDB
Sterownik Python
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ę naTrue
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 klasyObjectId
do obsługi identyfikatorów obiektów, podczas gdy daty używają standardowego pakietudatetime
. 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 ).