from pymongo import MongoClient

cli = MongoClient()

db = cli['treinamento']

col = db['cadastro']


"""
Explanation: Exemplo de CRUD no MongoDB
Exemplo de CRUD completo em MongoDB
Autor: Christiano Anderson
Propus Data Science
Estabelecendo a conexão com o banco
End of explanation
"""


cad = {
    'nome': 'Christiano Anderson',
    'empresa': 'Propus Data Science',
    'cursos': ['python','mongodb']
}

"""
Explanation: Definindo um documento para ser inserido
End of explanation
"""


cad_id = col.insert_one(cad)

print cad_id.inserted_id

"""
Explanation: Inserindo o documento na base
End of explanation
"""


cadastro = db['cadastro']

res = cadastro.find_one({})

print res['empresa'],res['nome']

"""
Explanation: Recuperando documentos
End of explanation
"""


col.insert_one({
        'nome':'Carolina',
        'idade': 29,
        'empresa': 'ACME',
        'cursos': ['mongodb','ruby'],
        'contatos': {
            'celular':'5199998888',
            'email': 'carol@tmp.com',
            'ramal': '2222'
            }
    })

col.insert_one({
        'nome':'Juliana',
        'idade': 25,
        'empresa': 'ACME',
        'cursos': ['mongodb','ruby','python'],
        'contatos': {
            'celular':'5199554433',
            'email': 'july@tmp.com',
            'ramal': '2221'
            }
    })

col.insert_one({
        'nome':'Rafael',
        'idade': 30,
        'empresa': 'XYZ',
        'cursos': ['mongodb','php'],
        'contatos': {
            'celular':'5188882222',
            'email': 'rafael@xyz.com',
            'ramal': '5511',
            'tel_residencial': '5122223333'
            }
    })

"""
Explanation: Inserindo outros documentos
End of explanation
"""


resultados = col.find({})
for r in resultados:
    print r['nome'], r['']

"""
Explanation: Pesquisando todos os usuários
End of explanation
"""


resultados = col.find({'cursos':'python'})

for r in resultados:
    print r['nome'], r['cursos']

"""
Explanation: Pesquisando quem tem Python na matéria
End of explanation
"""


resultados = col.find({'idade': {'$lt': 28}})

for r in resultados:
    print r['nome']

"""
Explanation: Pesquisando quem tem menos de 28 anos
End of explanation
"""


res = col.update_one({'nome':'Christiano Anderson'},{'$set': {'cidade':'Porto Alegre'}})

print res

"""
Explanation: Modificando documento
No exemplo abaixo, vamos adicionar cidade a um documento
End of explanation
"""


count = col.count({})

print count

res = col.delete_one({'nome':'Juliana'})

count = col.count({})

print count

"""
Explanation: Excluindo documento
No exemplo abaixo, vamos apagar o documento da usuária Juliana
End of explanation
"""


