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

$nin (operador de predicado de query)

$nin

$nin seleciona os documentos em que:

  • o valor de campo especificado não está na array especificada ou

  • o campo especificado não existe.

Você pode utilizar o $nin para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
  • 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 $nin operator has the following form:

{ field: { $nin: [ <value1>, <value2> ... <valueN> ] } }

Ao contrário dos operador de desigualdade ($gt, $gte, $lt e $lte), $nin não usa colchetes de tipo. Em vez disso, ele corresponde a documento onde o valor do campo não é um dos valores especificados, independentemente do tipo do valor.

Por exemplo, { a: { $nin: [ 2, 4 ] } } também corresponde a documento onde a é uma string.

If field has an array, the $nin operator selects the documents whose field has an array with no element equal to a value in the specified array. For example, <value1>, <value2>, and so on.

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

O exemplo a seguir retorna filmes em que runtime é maior que 1000 minutos e rated não está em [ "G", "PG" ]. Como $nin também corresponde a documentos que não contêm o campo rated, a query retorna filmes mesmo quando os dados de classificação não estão disponíveis:

db.movies.find(
{ rated: { $nin: [ "G", "PG" ] }, runtime: { $gt: 1000 } },
{ _id: 0, title: 1, year: 1, rated: 1 }
)

O exemplo a seguir define o campo exclude como true para filmes que não têm "Drama" em sua array genres:

db.movies.updateMany(
{ genres: { $nin: [ "Drama" ] } },
{ $set: { exclude: true } }
)

updateMany() also selects a document when the document does not contain the field $nin is matching on.

The inequality operator $nin is not very selective since it often matches a large portion of the index. As a result, in many cases, a $nin query with an index may perform no better than a $nin query that must scan all documents in a collection. See also Create Selective Queries.