Olá, Leandro, tudo bem?
Quando utilizamos o método deleteOne
ou updateOne
no MongoDB e a condição no filtro retorna mais de um registro, o banco de dados executará a linha de comando normalmente, sem dar nenhuma mensagem de erro. No entanto, apenas o primeiro documento que corresponder à condição será excluído ou atualizado.
Por exemplo, se tivermos uma coleção de filmes e quisermos excluir todos os filmes com a classificação "8.1", podemos usar o método deleteOne
com a seguinte linha de comando:
db.filmes.deleteOne({"classificação": 8.1})
Nesse caso, apenas o primeiro filme com a classificação "8.1" será excluído. Se houver mais filmes com essa classificação, eles não serão afetados.
Quanto à possibilidade de passar condições combinadas na linha de comando, como combinar o operador $or
com o operador $and
, é possível sim. Por exemplo, se quisermos buscar os filmes do gênero comedia ou
gênero romance e
filmes com a classificação "8.1" ou
classificação "9.0", podemos usar a seguinte linha de comando:
db.filmes.find( {
$and: [
{ $or: [ {"genero": "comedia"},{"genero": "romance"}] },
{ $or: [ {"classificação": 8.1}, {"classificação": 9.0} ] }
]
} )
Dessa forma, apenas filmes que correspondem a essas condições serão retornados.
Espero ter ajudado e bons estudos!