Definição
$not$notexecuta uma operaçãoNOTló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> } } }
Considere o seguinte exemplo:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
O exemplo seleciona todos os documentos na coleção inventory em que:
o valor do campo
priceé menor ou igual a1.99ouo campo
pricenão existe
{ $not: { $gt: 1.99 } } difere do operador $lte . { $lte: 1.99 } retorna apenas os documentos onde o campo price existe e seu valor é menor ou igual a 1.99.
Use o operador $not com outra expressão de operador. Para usar $not para uma verificação de desigualdade, use:
{ price: { $not: { $eq: 1.99 } } }
A consulta anterior é equivalente a:
{ price: { $ne: 1.99 } }
A consulta a seguir é inválida porque compara um campo sem um operador:
{ price: { $not: 1.99 } }
Comportamento
arrays
O operador $not pode gerar resultados inesperados quando usado com um array. Para corresponder documentos com base em várias condições falsas, use $nor.
Expressões regulares
$not suporta operações lógicas de NOT em:
Objetos de expressão regular, como
/pattern/.A consulta a seguir seleciona documentos na coleção
inventoryonde o valor do campoitemnão começa com a letrap:db.inventory.find( { item: { $not: /^p.*/ } } ) $regexexpressões de operador.Por exemplo, a seguinte query seleciona todos os documentos na collection
inventoryonde o valor do campoitemnã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