$inO operador
$inseleciona 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 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
Sintaxe
O operador $in tem o seguinte formato:
{ 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 tiver uma array, o operador $in seleciona os documentos cujo field tem 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.
$in compara cada parâmetro a cada documento na collection, o que pode causar problemas de desempenho. Para melhorar o desempenho, crie um índice no field que você deseja fazer uma query. Um índice permite que o MongoDB crie limites para cada elemento $in e pesquise com mais eficiência.
Observação
Este documento descreve o $in operador de query. Para o $in operador de agregação, consulte $in ( operador de expressão ).
Consultar dados no Atlas usando o MongoDB Search
Para dados armazenados no MongoDB Atlas, você pode usar o operador MongoDB Search in Operator ao executar queries.$search Executar $in após tem menos $search $search desempenho do que executar com o operador In Operator.
Para saber mais sobre a versão do MongoDB Search desse operador, consulte o operador In Operator na documentação do Atlas.
Exemplos
Os exemplos nesta página usam 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.
Match Values
Esta query seleciona documentos na coleção movies em que o valor do campo rated é "G" ou "TV-G":
db.movies.find( { rated: { $in: ["G", "TV-G"] } }, { _id: 0, title: 1 } )
[ { title: 'The Great Train Robbery' }, { title: 'A Corner in Wheat' }, { title: 'From Hand to Mouth' }, { title: 'One Week' }, { title: 'The Devil to Pay!' }, { title: 'Footlight Parade' }, { title: 'Gold Diggers of 1935' }, { title: 'Naughty Marietta' }, { title: 'Modern Times' }, { title: 'Gone with the Wind' }, { title: 'Fantasia' }, { title: 'The Man Who Came to Dinner' }, { title: 'National Velvet' }, { title: 'Alice in Wonderland' }, { title: 'The Member of the Wedding' }, { title: 'Seven Brides for Seven Brothers' }, { title: 'Around the World in Eighty Days' }, { title: 'The King and I' }, { title: 'A King in New York' }, { title: 'Ben-Hur' } ]
Embora você possa escrever a query utilizando o operador, utilize $or o $in operador ao invés do $or operador ao executar verificações de igualdade no mesmo campo.
Corresponder valores em uma array
A operação updateMany() a seguir define o campo familyFriendly como true quando a array rated tiver pelo menos um elemento que corresponda a "G" ou "TV-G":
db.movies.updateMany( { rated: { $in: ["G", "TV-G"] } }, { $set: { familyFriendly: true } } )
{ acknowledged: true, insertedId: null, matchedCount: 536, modifiedCount: 536, upsertedCount: 0 }
Para obter exemplos adicionais sobre como consultar arrays, consulte:
Para obter exemplos adicionais sobre queries, consulte Fazer query em documentos
Use $in com uma expressão regular
O operador $in pode selecionar documentos utilizando expressões regulares do formato /pattern/.
Esta query seleciona documentos na collection movies onde o campo plot começa com Alien ou contém sci-fi:
db.movies.find( { plot: { $in: [ /^Alien/ , /sci-fi/ ] } }, { _id: 0, title: 1, plot: 1 } )
[ { plot: 'Aliens come to Earth seeking scientists to help them in their war.', title: 'This Island Earth' }, { plot: 'Censored by the Polish authorities, this film was reedited and new footage added. It begins with a sci-fi motif: abstract images and electronic music take the viewer from ruins of Lebanon ...', title: 'Rece do gèry' }, { plot: 'An idyllic sci-fi future has one major drawback: life must end at 30.', title: "Logan's Run" }, { plot: "Four horror/sci-fi segments directed by four famous directors which are their own versions of classic stories from Rod Serling's landmark television series.", title: 'Twilight Zone: The Movie' }, { plot: 'Aliens who look like clowns come from outer space and terrorize a small town.', title: 'Killer Klowns from Outer Space' }, ... ]