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> } } }
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.99o valor do campo
pricenão é numéricoo campo
pricenão existe
{ $not: { $gt: 1.99 } } difere do $lte operador. { $lte: 1.99 } retorna apenas os documentos onde price o campo existe e seu valor é menor ou igual 1.99 a.
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 seguinte query é inválida porque compara um campo sem um operador:
{ price: { $not: 1.99 } }
arrays
O $not operador pode gerar resultados inesperados quando usado com uma array. Para combinar documentos com base em várias condições falsas,$nor use.
Expressões regulares
$not O suporta NOT operações lógicas do em:
Objetos de expressão regular, como
/pattern/.A seguinte query seleciona documentos na collection
inventoryonde o valor do campoitemnão começa com a letrap:db.inventory.find( { item: { $not: /^p.*/ } } ) $regexexpressões do 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