DEV Community

Gabriel_Silvestre
Gabriel_Silvestre

Posted on • Updated on

MondoDB - Filter Operators

Tabela de Conteúdos


Operadores de Comparação

O que são?

São operadores utilizados para a comparação de valores, sendo normalmente aplicados a métodos para leitura, atualização ou exclusão de Documentos.

Sintaxe

Todos os Operadores de Comparação seguem a mesma estrutura base, indicamos o campo que queremos verificar, seguido do operador junto do valor.

{ <campo>: { <operador>: <valor> } }
Enter fullscreen mode Exit fullscreen mode

Obs: Lembrando que esses operadores devem ser aplicados a métodos que suportem a aplicação de filtros, como o find(), countDocuments() ou o update().

Voltar ao top

Quais são?

$lt

  • Tradução: Less than, em português Menor que.

O operador irá buscar todos os valores Menores que ...

{ age: { $lt: 20 } }  # busca todos os Documentos com a propriedade "age" menor que 20
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$lte

  • Tradução: Less than or Equal, em português Menor ou Igual a.

O operador irá buscar todos os valores Menores ou Iguais a ...

{ price: { $lte: 29 } }  # busca todos os Documentos com a propriedade "price" menor ou igual a 29
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$gt

  • Tradução: Greater than, em português Maior que.

O operador irá buscar todos os valores Maiores que ...

{ age: { $gt: 18 } }  # busca todos os Documentos com a propriedade "age" maior que 18
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$gte

  • Tradução: Greater than or Equal, em português Maior ou Igual a.

O operador irá buscar todos os valores Maiores ou Iguais a ...

{ mana: { $gte: 400 } }  # busca todos os Documentos com a propriedade "mana" maior ou igual a 400
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$eq

  • Tradução: Equal, em português Igual a.

O operador irá buscar todos os valores Iguais a ...

{ _id: { $eq: 2 } }  # busca todos os Documentos com a propriedade "_id" igual a 2
Enter fullscreen mode Exit fullscreen mode
{ _id: 2 }  # podemos omitir o operador $eq de nosso filtro e o comportamento será o mesmo
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$ne

  • Tradução: Not Equal, em português Diferentes de.

O operador irá buscar todos os valores Diferentes de ...

{ class: { $ne: "Fighter" } }  # busca todos os Documentos com a propriedade "class" diferente de Fighter
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$in

  • Tradução: In, em português Dentro de.

O operador irá buscar todos os valores Dentro de ...

{ country: { $in: ["BR", "USA", "CAN"] } }  # busca todos os Documentos com a propriedade "country" dentro das seguintes opções BR, USA, CAN
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$nin

  • Tradução: Not In, em português Fora de.

O operador irá buscar todos os valores Fora de ...

{ country: { $nin: ["BR", "USA", "CAN"] } }  # busca todos os Documentos com a propriedade "country" fora das seguintes opções BR, USA, CAN
Enter fullscreen mode Exit fullscreen mode

Voltar ao top


Operadores Lógicos

O que são?

Assim como em linguagens de programação, os Operadores Lógicos do MongoDB realizam "inferências lógicas", exemplificando, podemos verificar se a condição X E a condição Y são verdadeiras, assim como também podemos verificar se ao menos uma delas é verdadeira através do OU.

Sintaxe

Assim como os Operadores de Comparação, os lógicos também devem ser utilizados somente nos métodos que aceitam algum tipo de filtro como parâmetro.

Há duas possíveis estruturas para os Operadores Lógicos, podemos ter uma estrutura simples, no qual não é possível concatenar verificações e estruturas mais complexas que suportam a concatenação de verificações.

O único Operador Lógico que não suporta essa concatenação é o $not e sua estrutura consiste em utilizar o operador depois do campo e antes da verificação.

# Sintaxe para o operador $not
{ <campo>: { <operador lógico>: { <operador de comparação>: <valor> } } }
Enter fullscreen mode Exit fullscreen mode

Já o restante dos Operadores Lógicos suporta a concatenação e sua estrutura é ligeiramente diferente, definimos o Operador a frente de tudo e dentro de um Array adicionamos nossas verificações

# Sintaxe para os o restante dos operadores
{ <operador lógico>: [{ <campo>: { <comparador>: <valor> } }, { <campo>: { <comparador>: <valor> } }] }
Enter fullscreen mode Exit fullscreen mode

Quais são?

$not

  • Tradução: Not, em português Não é.

O operador irá buscar todos os valores que Não são ... / Não possuem ...

{ price: { $not: { $gt: 19.99 } } }  # busca todos os Documentos com a propriedade "price" NÃO maior que 19.99

# também busca todos os Documentos que NÃO possuem a propriedade "price"
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$or

  • Tradução: Or, em português Ou.

O operador irá buscar todos os valores que Ou é isso, Ou é aquilo ...

{ $or: [{ promo: true }, { price: { $lt: 19.99 } }] }
# busca todos os documentos que a propriedade "promo" seja verdadeira,
# OU que tenham a propriedade "price" menor que 19.99
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$nor

  • Tradução: Or not, em português Ou não.

O operador irá buscar todos os valores que Ou Não é isso, Ou Não é aquilo ...

{ $nor: [{ promo: true }, { price: { $lt: 19.99 } }] }
# busca todos os documentos que a propriedade "promo" NÃO seja verdadeira,
# OU que propriedade "price" NÃO seja menor que 19.99
Enter fullscreen mode Exit fullscreen mode

Voltar ao top

$and

  • Tradução: AND, em português E.

O operador irá buscar todos os valores que são isso E aquilo ...

{ $and: [{ promo: true }, { price: { $lt: 19.99 } }] }
# busca todos os documentos que a propriedade "promo" seja verdadeira,
# E que tenham a propriedade "price" menor que 19.99
Enter fullscreen mode Exit fullscreen mode

Voltar ao top


sort()

O que é?

É um método utilizado para ordenar os resultados de uma busca, essa ordenação pode ser numérica, alfabética, crescente ou decrescente.

Sintaxe

O método sort() deve ser utilizado após uma busca, ou seja, deve ser invocado logo após o método find().

O sort() aceita "infinitos" parâmetros, esses que devem vir no formato chave:valor, onde a chave indica o campo a ser utilizado na ordenação e o valor diz se a ordenação deverá ser crescente ou decrescente.

db.my-collection.find().sort({ <campo>: <tipo de ordenação> })
Enter fullscreen mode Exit fullscreen mode
db.my-collection.find().sort({ price: 1 })  # 1 indica ordenação crescente
db.my-collection.find().sort({ price: -1 })  # -1 indica ordenação decrescente

db.my-collection.find().sort({ price: 1 }, { title: 1 })  # podemos ordenar por mais de um campo
Enter fullscreen mode Exit fullscreen mode

Voltar ao top


Removendo Documentos

O que é?

É a forma como podemos deletar um, ou mais, Documentos de nossa Coleção.

Sintaxe

Temos duas formas de deletarmos Documentos de nossas Coleções, podemos excluir apenas um, ou vários de uma vez. Para ambos os casos a sintaxe é basicamente a mesma, o que irá mudar será apenas o método.

Para removermos um documento iremos invocar o método de deleção desejado, passando para ele um objeto como parâmetro, esse objeto poderá conter apenas uma condição simples, bem como condições mais complexas.

Obs: Também podemos realizar deleções sem definir um filtro específico, porém isso não é recomendado. (equivalente ao DELETE sem WHERE).

# para deletar apenas um documento utilizamos o deleteOne()

db.my-collection.deleteOne({})  # exclui apenas o primeiro Documento da Coleção
db.my-collection.deleteOne({ _id: 4 })
Enter fullscreen mode Exit fullscreen mode
# para deletar diversos documentos de uma única vez, utilizamos o deleteMany()

db.my-collection.deleteMany({})  # irá deletar TODOS os Documentos da Coleção
db.my-collection.deleteMany({ qty: 0 })
Enter fullscreen mode Exit fullscreen mode

Voltar ao top


Links Úteis

Voltar ao top

Top comments (0)