$not
Nesta página
Definição
$not
$not
executa uma operaçãoNOT
lógica no<operator-expression>
especificado e seleciona os documentos que não correspondem ao<operator-expression>
. Isso inclui documentos que não contêm ofield
.
Compatibilidade
Você pode utilizar o $not
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O operador $not
tem o seguinte formato:
{ field: { $not: { <operator-expression> } } }
Considere o seguinte exemplo:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Esta query selecionará todos os documentos na collection inventory
onde:
o valor do campo
price
é menor ou igual a1.99
ouo campo
price
não existe
{ $not: { $gt: 1.99 } }
é diferente do operador $lte
. { $lte: 1.99 }
retorna apenas os documentos onde o campo price
existe e seu valor é menor ou igual a 1.99
.
Lembre-se de que o operador $not
afeta apenas outros operadores e não pode verificar campos e documentos de forma independente. Portanto, use o operador $not
para disjunções lógicas e o operador $ne
para testar diretamente o conteúdo dos campos.
Comportamento
$not
e tipos de dados
A operação do operador $not
é consistente com o comportamento de outros operadores, mas pode produzir resultados inesperados com alguns tipos de dados, como arrays.
$not
e expressões regulares
O operador $not
pode executar a operação lógica NOT
em:
Objetos de expressão regular (ou seja,
/pattern/
)Por exemplo, a seguinte query seleciona todos os documentos na collection
inventory
onde o valor do campoitem
não começa com a letrap
.db.inventory.find( { item: { $not: /^p.*/ } } ) $regex
expressão do operadorPor exemplo, a seguinte query seleciona todos os documentos na collection
inventory
onde o valor do campoitem
não começa com a letrap
.db.inventory.find( { item: { $not: { $regex: "^p.*" } } } ) db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } ) objetos de expressão regular da linguagem do driver
Por exemplo, a seguinte query do PyMongo utiliza o método
re.compile()
do Python para compilar uma expressão regular:import re for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ): print noMatch