Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

$in

Nesta página

  • Compatibilidade
  • Sintaxe
  • Consultar dados no Atlas usando o Atlas Search
  • Exemplos
  • Use o operador $in para corresponder valores
  • Use o operador $in para corresponder valores em uma array
  • Use o operador $in com uma expressão regular
$in

O operador $in seleciona os documentos nos quais o valor de um campo é igual a qualquer valor na array especificada.

Você pode utilizar o $in 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

Para especificar uma expressão $in, use o seguinte protótipo:

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

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

Se field contiver uma array, o operador $in seleciona os documentos cujo field inclui uma array que contém pelo menos um elemento que corresponde a um valor na array especificada (por exemplo, <value1>, <value2> e assim por diante).

O operador $in compara cada parâmetro a cada documento na coleção, o que pode levar a problemas de desempenho. Para melhorar o desempenho:

  • É recomendável limitar o número de parâmetros passados para
    $in operador para dezenas de valores. O uso de centenas de parâmetros ou mais pode impactar negativamente o desempenho da consulta.
  • Crie um índice no field em que você deseja fazer uma query.

Observação

Este documento descreve o operador de query $in. Para a descrição do operador de agregação $in, consulte $in (agregação).

Para dados armazenados no MongoDB Atlas, você pode utilizar o Atlas Search no operador in quando executar queries $search. O desempenho da execução de $in após $search é inferior ao da execução de $search com o operador in.

Para saber mais sobre a versão do Atlas Search desse operador, consulte o operador in documentação do Atlas.

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" ] }
] )

Considere o seguinte exemplo:

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

Esta query seleciona todos os documentos na coleção inventory onde o valor do campo quantity é 5 ou 15.

{ item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ] },
{ item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ] }

Embora você possa gravar esta query utilizando o operador $or, utilize o operador $in ao invés do operador $or ao executar verificações de igualdade no mesmo campo.

A operação updateMany() a seguir define o campo exclude como false quando a array tags tiver pelo menos um elemento que corresponda a "home" ou "school".

db.inventory.updateMany(
{ tags: { $in: [ "home", "school" ] } },
{ $set: { exclude: false } }
)

Saída de exemplo:

{
item: 'Pens',
quantity: 350,
tags: [ 'school', 'office' ],
exclude: false
},
{
item: 'Erasers',
quantity: 15,
tags: [ 'school', 'home' ],
exclude: false
},
{
item: 'Books',
quantity: 5,
tags: [ 'school', 'storage', 'home' ],
exclude: false
}

Para obter exemplos adicionais sobre como consultar arrays, consulte:

Para obter exemplos adicionais sobre queries, consulte Fazer query em documentos

O operador $in pode especificar valores correspondentes utilizando expressões comuns do formulário /pattern/. Você não pode usar expressões do operador $regex dentro de um $in.

Considere o seguinte exemplo:

db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

Esta query seleciona todos os documentos na coleção inventory em que o campo tags contém uma string que começa com be ou st ou uma array com pelo menos um elemento que começa com be ou st.

Dica

Veja também:

Voltar

$gte