Menu Docs

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

$ em

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

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 contém 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 collection, 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 que você deseja fazer uma query.

Observação

Este documento descreve o operador de query $in . Para o operador de aggregation $in , consulte $in (aggregation).

Para dados armazenados no MongoDB Atlas, você pode usar o operador do Atlas Search in ao executar queries $search . A execução $in após $search é menos eficiente que a 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 collection 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 escrever 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 da queries de arrays, consulte:

Para obter exemplos adicionais de query, consulte:

O operador $in pode especificar valores correspondentes utilizando expressões regulares do formato /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 collection 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:

← $gte
$lt →