Persistencia de datos de Python - módulo PyMongo

MongoDB es un documento orientado NoSQLbase de datos. Es una base de datos multiplataforma distribuida bajo licencia pública del lado del servidor. Utiliza documentos similares a JSON como esquema.

Con el fin de proporcionar la capacidad de almacenar grandes datos, se interconectan más de un servidor físico (llamados fragmentos), de modo que se logre una escalabilidad horizontal. La base de datos MongoDB consta de documentos.

Un documento es análogo a una fila en una tabla de base de datos relacional. Sin embargo, no tiene un esquema particular. El documento es una colección de pares clave-valor, similar al diccionario. Sin embargo, el número de pares de kv en cada documento puede variar. Así como una tabla en una base de datos relacional tiene una clave principal, el documento en la base de datos MongoDB tiene una clave especial llamada"_id".

Antes de ver cómo se usa la base de datos MongoDB con Python, comprendamos brevemente cómo instalar e iniciar MongoDB. La versión comunitaria y comercial de MongoDB está disponible. La versión comunitaria se puede descargar desde www.mongodb.com/download-center/community .

Suponiendo que MongoDB esté instalado en c: \ mongodb, el servidor se puede invocar usando el siguiente comando.

c:\mongodb\bin>mongod

El servidor MongoDB está activo en el número de puerto 22017 de forma predeterminada. Las bases de datos se almacenan en la carpeta data / bin de forma predeterminada, aunque la ubicación se puede cambiar con la opción –dbpath.

MongoDB tiene su propio conjunto de comandos para usar en un shell de MongoDB. Para invocar shell, useMongo mando.

x:\mongodb\bin>mongo

Aparece un indicador de shell similar al indicador de shell de MySQL o SQLite, antes del cual se pueden ejecutar los comandos nativos de NoSQL. Sin embargo, estamos interesados ​​en conectar la base de datos MongoDB a Python.

PyMongoEl módulo ha sido desarrollado por MongoDB Inc para proporcionar una interfaz de programación Python. Utilice la conocida utilidad pip para instalar PyMongo.

pip3 install pymongo

Suponiendo que el servidor MongoDB esté en funcionamiento (con mongod comando) y está escuchando en el puerto 22017, primero debemos declarar un MongoClientobjeto. Controla todas las transacciones entre la sesión de Python y la base de datos.

from pymongo import MongoClient
client=MongoClient()

Utilice este objeto de cliente para establecer una conexión con el servidor MongoDB.

client = MongoClient('localhost', 27017)

Se crea una nueva base de datos con el siguiente comando.

db=client.newdb

La base de datos MongoDB puede tener muchas colecciones, similares a las tablas de una base de datos relacional. Un objeto Collection es creado porCreate_collection() función.

db.create_collection('students')

Ahora, podemos agregar uno o más documentos a la colección de la siguiente manera:

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()

Para recuperar los documentos (similar a la consulta SELECT), debemos usar find()método. Devuelve un cursor con la ayuda del cual se pueden obtener todos los documentos.

students=db['students']
docs=students.find()
for doc in docs:
   print (doc['Name'], doc['age'], doc['marks'] )

Para encontrar un documento en particular en lugar de todos ellos en una colección, necesitamos aplicar el método filter to find (). El filtro utiliza operadores lógicos. MongoDB tiene su propio conjunto de operadores lógicos como se muestra a continuación:

No Señor Operador MongoDB y operador lógico tradicional
1

$eq

igual a (==)

2

$gt

mayor que (>)

3

$gte

mayor o igual que (> =)

4

$in

si es igual a cualquier valor en la matriz

5

$lt

menos que (<)

6

$lte

menor o igual que (<=)

7

$ne

no es igual a (! =)

8

$nin

si no es igual a cualquier valor en la matriz

Por ejemplo, nos interesa obtener lista de estudiantes mayores de 21 años. Usando el operador $ gt en el filtro parafind() método de la siguiente manera -

students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
   print (doc.get('Name'), doc.get('age'), doc.get('marks'))

El módulo PyMongo proporciona update_one() y update_many() métodos para modificar un documento o más de un documento que satisfaga una expresión de filtro específica.

Actualicemos el atributo de marcas de un documento cuyo nombre es Juhi.

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()