Sök…


Syntax

  • mongodb: // [användarnamn: lösenord @] server1 [: port1] [, värd2 [: port2] ... [, hostN [: portN]]] [? / [databas] [alternativ]]

parametrar

Parameter Detalj
hostX Valfri. Du kan ange så många värdar som behövs. Du skulle ange flera värdar, till exempel för anslutningar till replikuppsättningar.
: portX Valfri. Standardvärdet är: 27017 om det inte anges.
databas Valfri. Namnet på databasen som ska verifieras om anslutningssträngen innehåller autentiseringsuppgifterIf / databas inte anges och anslutningssträngen innehåller referenser kommer drivrutinen att autentisera till administraturdatabasen.
?alternativ Anslutningsspecifika alternativ

Anslut till MongoDB med 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-frågor

När du har fått ett collection använder frågor samma syntax som i mongoskalet. Några små skillnader är:

  • varje tangent måste bifogas inom parentes. Till exempel:

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

    blir i pymongo (notera True i stora bokstäver):

    db.find({"frequencies": { "$exists": True }})
    
  • objekt som objekt-id eller ISODate manipuleras med hjälp av pythonklasser. PyMongo använder sin egen ObjectId klass för att hantera objekt-id, medan datum använder det vanliga datetime paketet. Om du till exempel vill fråga alla händelser mellan 2010 och 2011 kan du göra:

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

Uppdatera alla dokument i en samling med PyMongo

Låt oss säga att du måste lägga till ett fält till varje dokument i en samling.

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)

De find metoden returnerar en Cursor , där du kan lätt iterera över med hjälp av for in syntax. Sedan kallar vi update , specificerar _id och att vi lägger till ett fält ( $set ). Parametrarna upsert och multi kommer från mongodb ( se här för mer info ).



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow