Ricerca…


Sintassi

  • MongoDB: // [username: password @] host1 [: port1] [, host2 [: port2], ... [, HostN [: portN]]] [/? [database] [opzioni]]

Parametri

Parametro Dettaglio
hostX Opzionale. È possibile specificare tutti gli host necessari. Dovresti specificare più host, ad esempio, per le connessioni ai set di repliche.
: portX Opzionale. Il valore predefinito è: 27017 se non specificato.
Banca dati Opzionale. Il nome del database per l'autenticazione se la stringa di connessione include credentialsIf / database di autenticazione non è specificato e la stringa di connessione include le credenziali, il driver verrà autenticato nel database di amministrazione.
?opzioni Opzioni specifiche di connessione

Connettiti a MongoDB usando 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()

Query PyMongo

Una volta ottenuto un oggetto di collection , le query utilizzano la stessa sintassi della shell di mongo. Alcune piccole differenze sono:

  • ogni chiave deve essere racchiusa tra parentesi. Per esempio:

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

    diventa in pymongo (nota il True in maiuscolo):

    db.find({"frequencies": { "$exists": True }})
    
  • oggetti come ID oggetto o ISODate vengono manipolati usando le classi python. PyMongo utilizza la propria classe ObjectId per gestire gli ID oggetto, mentre le date utilizzano il pacchetto datetime standard. Ad esempio, se desideri eseguire una query su tutti gli eventi tra il 2010 e il 2011, puoi eseguire:

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

Aggiorna tutti i documenti in una raccolta usando PyMongo

Diciamo che è necessario aggiungere un campo a ogni documento in una raccolta.

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)

Il metodo find restituisce un Cursor , sul quale è possibile eseguire facilmente l'iterazione utilizzando la sintassi for in . Quindi, chiamiamo il metodo di update , specificando _id e aggiungendo un campo ( $set ). I parametri upsert e multi provengono da mongodb ( vedi qui per maggiori informazioni ).



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow