Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do 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: 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> ] } }

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.

Para comparação de diferentes valores dos tipos de BSON, consulte a ordem de comparação de BSON especificada.

Os exemplos nesta página utilizam 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.

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 }
)
[
{ title: 'Centennial', year: 1978 },
{
title: 'Baseball',
year: 1994,
rated: 'TV-PG'
}
]

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 } }
)
{
acknowledged: true,
insertedId: null,
matchedCount: ...,
modifiedCount: ...,
upsertedCount: 0
}

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.

Voltar

$ne

Nesta página