1. Nessa aula vamos aprender a utilizar regex em consultas no MongoDB.
  2. Pensando nisso no arquivo 4-miscelanea.py e adicione o código a seguir:
from pymongo import MongoClient

#1-Estabelece conexão com o MongoDB e o Database
client = MongoClient()
db = client['nobel']

prizes = db['prizes']
laureates = db['laureates']

# ERRADO
print(db.laureates.count_documents({
    'prizes':{
        'category': 'physics',
        'share': '1'
    }
}))

#2-Todos laureados que possuem prêmio
# em física e compartilhado
print(db.laureates.count_documents({
    'prizes':{
        '$elemMatch':{
            'category': 'physics',
            'share': '1'
        }
    }
}))

#3-Todos laureados que possuem prêmio em física
# compartilhado antes de 1945 
print(db.laureates.count_documents({
    'prizes':{
        '$elemMatch':{
            'category': 'physics',
            'share': '1',
            'year':{'$lt': '1945'}
        }
    }
}))

#4-Utilizando Regex
# Alguns laureados nasceram em lugar
# que se tornaria Polônia

print(db.laureates.distinct(
    'bornCountry',
    {'bornCountry': {'$regex':'Poland'}}
))

# 5-Case insensitive (poland)
print(db.laureates.distinct(
    'bornCountry',
    {'bornCountry': {'$regex':'poland', '$options':"i"}}
))

#6-Utilizando classe Regex
from bson.regex import Regex

print(db.laureates.distinct(
    'bornCountry',
    {'bornCountry': Regex('poland', 'i')}
))

#7-Começa com
print(db.laureates.distinct(
    'bornCountry',
    {'bornCountry': Regex('^Poland')}
))

#8-Termina com \ escape parêntesis
print(db.laureates.distinct(
    'bornCountry',
    {'bornCountry': Regex('now Poland\)$')}
))
Para executar o arquivo, execute o comando python .\4-miscelanea.py