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.

$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: 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

O operador $nin tem o seguinte formato:

{ 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.

Se field tiver uma array, o operador $nin seleciona os documentos cujo field tem uma array sem nenhum elemento igual a um valor na array especificada. Por exemplo, <value1>, <value2>, e assim por diante.

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() também seleciona um documento quando o documento não contém o campo $nin correspondente.

O operador de desigualdade $nin não é muito seletivo, pois geralmente corresponde a uma grande parte do índice. Como resultado, em muitos casos, uma query$nin com um índice pode não ter um desempenho melhor do que uma query$nin que deve verificar todos os documentos em uma collection. Consulte também Criar queries seletivas.