Python Data Persistence - módulo PyMongo

MongoDB é um orientado a documentos NoSQLbase de dados. É um banco de dados de plataforma cruzada distribuído sob licença pública do lado do servidor. Ele usa documentos semelhantes a JSON como esquema.

Para fornecer capacidade de armazenamento de dados enormes, mais de um servidor físico (chamados de shards) são interconectados, de forma que uma escalabilidade horizontal seja alcançada. O banco de dados MongoDB consiste em documentos.

Um documento é análogo a uma linha em uma tabela de banco de dados relacional. No entanto, ele não possui um esquema específico. Documento é uma coleção de pares de valores-chave - semelhante ao dicionário. No entanto, o número de pares kv em cada documento pode variar. Assim como uma tabela no banco de dados relacional tem uma chave primária, o documento no banco de dados MongoDB tem uma chave especial chamada"_id".

Antes de ver como o banco de dados MongoDB é usado com Python, vamos entender brevemente como instalar e iniciar o MongoDB. A comunidade e a versão comercial do MongoDB estão disponíveis. A versão da comunidade pode ser baixada em www.mongodb.com/download-center/community .

Supondo que o MongoDB esteja instalado em c: \ mongodb, o servidor pode ser chamado usando o seguinte comando.

c:\mongodb\bin>mongod

O servidor MongoDB está ativo na porta número 22017 por padrão. Os bancos de dados são armazenados na pasta data / bin por padrão, embora o local possa ser alterado pela opção –dbpath.

MongoDB tem seu próprio conjunto de comandos para ser usado em um shell MongoDB. Para invocar o shell, useMongo comando.

x:\mongodb\bin>mongo

Um prompt de shell semelhante ao prompt de shell do MySQL ou SQLite aparece antes do qual os comandos nativos NoSQL podem ser executados. No entanto, estamos interessados ​​em conectar o banco de dados MongoDB ao Python.

PyMongoO módulo foi desenvolvido pela própria MongoDB Inc para fornecer interface de programação Python. Use o utilitário pip bem conhecido para instalar o PyMongo.

pip3 install pymongo

Supondo que o servidor MongoDB esteja instalado e funcionando (com mongod comando) e está escutando na porta 22017, primeiro precisamos declarar um MongoClientobjeto. Ele controla todas as transações entre a sessão Python e o banco de dados.

from pymongo import MongoClient
client=MongoClient()

Use este objeto cliente para estabelecer conexão com o servidor MongoDB.

client = MongoClient('localhost', 27017)

Um novo banco de dados é criado com o seguinte comando.

db=client.newdb

O banco de dados MongoDB pode ter muitas coleções, semelhantes às tabelas em um banco de dados relacional. Um objeto de coleção é criado porCreate_collection() função.

db.create_collection('students')

Agora, podemos adicionar um ou mais documentos à coleção da seguinte maneira -

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 os documentos (semelhante à consulta SELECT), devemos usar find()método. Ele retorna um cursor com a ajuda do qual todos os documentos podem ser obtidos.

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

Para encontrar um determinado documento em vez de todos eles em uma coleção, precisamos aplicar o filtro para o método find (). O filtro usa operadores lógicos. MongoDB tem seu próprio conjunto de operadores lógicos conforme abaixo -

Sr. Não Operador MongoDB e operador lógico tradicional
1

$eq

igual a (==)

2

$gt

maior que (>)

3

$gte

maior ou igual a (> =)

4

$in

se igual a qualquer valor na matriz

5

$lt

menos que (<)

6

$lte

menor ou igual a (<=)

7

$ne

diferente de (! =)

8

$nin

se não for igual a qualquer valor na matriz

Por exemplo, estamos interessados ​​em obter lista de alunos com mais de 21 anos. Usando o operador $ gt no filtro parafind() método da seguinte forma -

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

O módulo PyMongo fornece update_one() e update_many() métodos para modificar um documento ou mais de um documento que satisfaça uma expressão de filtro específica.

Vamos atualizar o atributo de marcas de um documento cujo nome é 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()