$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 do 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> } } }
Comportamento
Considere o seguinte exemplo de query:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Esta query seleciona todos os documentos na collection inventory
que atendem a uma das seguintes condições:
o valor do campo
price
é menor ou igual a1.99
o valor do campo
price
não é numéricoo 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
.
Você deve usar o operador $not
com outra expressão de operador. Por exemplo, para usar $not
para realizar uma verificação de igualdade, use esta sintaxe:
{ price: { $not: { $eq: 1.99 } } }
A consulta anterior é equivalente a:
{ price: { $ne: 1.99 } }
A consulta $not
a seguir é inválida porque tenta comparar um campo sem um operador:
{ price: { $not: 1.99 } }
arrays
Quando é passado um argumento de array, o operador $not
pode gerar resultados inesperados. Para corresponder documentos com base em várias condições falsas, use $nor
.
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