Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$nin

Nesta página

  • Compatibilidade
  • Sintaxe
  • Exemplos
$nin

$nin seleciona os documentos onde:

  • 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 MongoDB na nuvem

O operador $nin tem o seguinte formato:

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

Se field contiver uma array, o operador $nin seleciona os documentos cujo field contém uma array sem nenhum elemento igual a um valor na array especificada (por exemplo, <value1>, <value2> e assim por diante ligado).

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

Crie a coleção inventory:

db.inventory.insertMany( [
{ "item": "Pens", "quantity": 350, "tags": [ "school", "office" ] },
{ "item": "Erasers", "quantity": 15, "tags": [ "school", "home" ] },
{ "item": "Maps", "tags": [ "office", "storage" ] },
{ "item": "Books", "quantity": 5, "tags": [ "school", "storage", "home" ] }
] )

A query seguinte seleciona todos os documentos da collection inventory onde quantity não é igual a 5 ou 15.

A query também corresponde a documentos que não têm um campo quantity.

db.inventory.find( { quantity: { $nin: [ 5, 15 ] } }, { _id: 0 } )

Saída de exemplo:

{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ] },
{ item: 'Maps', tags: [ 'office', 'storage' ] }

Defina o campo exclude como true para documentos que não possuem a marcação "school".

db.inventory.updateMany(
{ tags: { $nin: [ "school" ] } },
{ $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 Seletividade de query.

Dica

Veja também:

← $ne