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ę naTruewielkimi literami):db.find({"frequencies": { "$exists": True }})obiekty takie jak identyfikatory obiektów lub
ISODatesą manipulowane przy użyciu klas python. PyMongo używa swojej własnej klasyObjectIddo 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 ).