Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$not (operador de predicado de query)

$not

$not performs a logical NOT operation on the specified <operator-expression> and selects the documents that do not match the <operator-expression>. This includes documents that do not contain the field.

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

The $not operator has the following form:

{ field: { $not: { <operator-expression> } } }

Considere o seguinte exemplo de query:

db.movies.find( { runtime: { $not: { $gt: 180 } } } )

O exemplo seleciona todos os documentos na coleção movies em que:

  • o valor do campo runtime é menor ou igual a 180 ou

  • o campo runtime não existe

{ $not: { $gt: 180 } } difere do operador $lte. { $lte: 180 } retorna apenas os documentos onde o campo runtime existe e seu valor é menor ou igual a 180.

Use o operador $not com outra expressão de operador. Para usar $not para uma verificação de desigualdade, use:

{ runtime: { $not: { $eq: 120 } } }

A consulta anterior é equivalente a:

{ runtime: { $ne: 120 } }

A query a seguir é inválida porque compara um campo sem um operador:

{ price: { $not: 1.99 } }

O operador $not pode gerar resultados inesperados quando usado com uma array. Para corresponder documentos com base em várias condições falsas, use $nor.

Os exemplos nesta página usam dados do conjunto de dados de amostra sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

$not supports logical NOT operations on:

  • Objetos de expressão regular, como /pattern/.

    O exemplo a seguir retorna filmes em que runtime é maior que 1000 minutos e title não começa com a letra T. Como $not também corresponde a documentos que não contêm o campo title, a query retorna filmes mesmo quando os dados do título não estão disponíveis:

    db.movies.find(
    { title: { $not: /^T/ }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )
  • $regex expressões de operador.

    As duas queries a seguir retornam filmes em que runtime é maior que 1000 minutos e title não começa com a letra T. A primeira query passa uma string para $regex:

    db.movies.find(
    { title: { $not: { $regex: "^T" } }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )

    A segunda query passa um literal regex para $regex:

    db.movies.find(
    { title: { $not: { $regex: /^T/ } }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )
  • Objetos de expressão regular da linguagem do driver.

    For example, the following PyMongo query uses Python's re.compile() method to compile a regular expression:

    import re
    for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ):
    print noMatch