Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
$ em
Nesta página
$in
O operador
$in
seleciona os documentos onde o valor de um campo é igual a qualquer valor na array especificada.
Compatibilidade
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
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão código-disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
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).
Consultar dados no Atlas usando o Atlas Search
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.
Exemplos
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" ] } ] )
Use o operador $in
para corresponder valores
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.
Use o operador $in
para corresponder valores em uma array
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:
Use o operador $in
com uma expressão regular
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
.