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 } } } )
Esta query selecionará todos os documentos na collection inventory onde:
o valor do campo
priceé menor ou igual a1.99ouo campo
pricenã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 } }
Comportamento
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
inventoryonde o valor do campoitemnão começa com a letrap.db.inventory.find( { item: { $not: /^p.*/ } } ) $regexexpressão do operadorPor 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