-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmongo_features.py
85 lines (72 loc) · 2.86 KB
/
mongo_features.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from pymongo import MongoClient
from pymongo.server_api import ServerApi
# String de conexão
CONNECTION_STRING = "mongodb+srv://romuloreis:[email protected]/?retryWrites=true&w=majority&appName=Cluster0"
# Conexão inicial com o MongoDB
def conectar_mongo():
"""
Conecta ao MongoDB e verifica a conexão com um ping.
"""
client = MongoClient(CONNECTION_STRING, server_api=ServerApi('1'))
try:
client.admin.command('ping')
print("Pinged your deployment. You successfully connected to MongoDB!")
return client
except Exception as e:
print(f"Erro ao conectar: {e}")
return None
# Função para limpar a coleção
def limpar_colecao(collection):
"""
Limpa todos os documentos de uma coleção.
:param collection: A coleção a ser limpa.
"""
collection.delete_many({})
print("Coleção limpa com sucesso!")
# Função para inserir ou atualizar documentos
def inserir_ou_atualizar_documentos(collection, documents):
"""
Insere ou atualiza documentos na coleção, evitando duplicidade.
:param collection: A coleção onde os documentos serão inseridos/atualizados.
:param documents: Lista de documentos a serem inseridos/atualizados.
"""
for doc in documents:
collection.update_one(
{"item": doc["item"]}, # Filtro: busca por item existente
{"$set": doc}, # Atualiza os campos com os novos valores
upsert=True # Insere se o documento não existir
)
print("Documentos inseridos ou atualizados com sucesso!")
# Função para consultar documentos na coleção
def consultar_documentos(collection):
"""
Consulta e exibe todos os documentos de uma coleção.
:param collection: A coleção a ser consultada.
"""
print("\nDocumentos na coleção:")
for doc in collection.find():
print(doc)
# Função para editar um item específico
def editar_item(collection, item_name, novos_valores):
"""
Edita um item existente na coleção com base no nome do item.
:param collection: A coleção onde o item está localizado.
:param item_name: Nome do item a ser editado.
:param novos_valores: Dicionário com os campos e valores a serem atualizados.
"""
resultado = collection.update_one(
{"item": item_name}, # Filtro: encontra pelo nome do item
{"$set": novos_valores} # Atualiza os campos fornecidos
)
if resultado.matched_count > 0:
print(f"Item '{item_name}' atualizado com sucesso!")
else:
print(f"Item '{item_name}' não encontrado.")
# Integração com o MongoDB
if __name__ == "__main__":
# Conectar ao MongoDB
client = conectar_mongo()
if client:
db = client["estoques"]
collection = db["produtos"]
limpar_colecao(collection=collection)