Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2025

ProgramaçãoLinguagens de programação
Código
fg115330
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Desenvolvimento de Sistemas
Observe o resultado da execução dos seguintes comandos do MongoDB Shell.Imagem associada para resolução da questãoPara listar apenas os processos que possuem dois réus, deve-se executar o comando:
  1. A'Processos'.filter(toArray({reu=2}));
  2. Bdb.collection.count({"partes.reu",2});
  3. CMPU2025.Processos.dataSize("partes.reu"$2);
  4. Ddb["Processos"].find({"partes.reu":{$size:2}});
  5. Edb.Processos.countDocuments({"partes.reu":"2"});
Revelar gabarito e comentário

GabaritoD — db["Processos"].find({"partes.reu":{$size:2}});

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

MongoDB: consultas com operador $size

Gabarito: letra D. Para listar apenas os processos que possuem dois réus, o comando correto é db["Processos"].find({"partes.reu":{$size:2}}), pois o operador $size do MongoDB filtra documentos cujo campo de array tenha exatamente o número de elementos especificado — neste caso, o array partes.reu com exatamente 2 elementos (dois réus).

O MongoDB é um banco de dados NoSQL orientado a documentos, no qual os dados são armazenados em coleções (equivalentes a tabelas) e documentos (equivalentes a registros). Para consultar documentos, utiliza-se o método find(), que recebe um filtro no formato JSON. Quando um campo armazena um array, como é o caso de partes.reu (que guarda os réus de um processo), podemos usar operadores de consulta específicos para arrays. O operador $size é um desses operadores: ele seleciona documentos em que o array tenha um tamanho exato. Por exemplo, se um processo tem dois réus, o campo partes.reu é um array com dois elementos, e {"partes.reu": {$size: 2}} retorna exatamente esse documento.

É importante entender a diferença entre consultar por tamanho de array e consultar por valor dentro do array. O $size verifica a quantidade de elementos; já uma consulta como {"partes.reu": "João"} verifica se o array contém o valor "João". A banca explora justamente essa confusão: algumas alternativas tentam usar comparação direta com um número (como {"partes.reu": 2}), o que não funciona porque o campo é um array, não um número. Outras tentam usar métodos que não existem ou sintaxe incorreta.

Na prática, se você tivesse uma coleção Processos com documentos assim:

{ "_id": 1, "partes": { "reu": ["João", "Maria"] } }
{ "_id": 2, "partes": { "reu": ["José"] } }

A consulta db["Processos"].find({"partes.reu": {$size: 2}}) retornaria apenas o primeiro documento, pois é o único cujo array partes.reu tem exatamente 2 elementos. O segundo documento tem apenas 1 réu e seria excluído.

A pegadinha central desta questão é a sintaxe e o operador correto. O candidato pode confundir $size com outras formas de consulta, como countDocuments (que conta documentos, não filtra por tamanho de array) ou tentar usar operadores de comparação numérica em um campo que é array. Além disso, a notação de acesso à coleção (db["Processos"] ou db.Processos) é equivalente, mas o filtro precisa estar correto.

Guarde o critério decisivo: para filtrar por quantidade de elementos em um array, o operador é $size, e ele deve ser usado dentro do filtro do find(). É exatamente nesse ponto que as alternativas se dividem.

  1. 1Acessar coleção (db["Processos"])
  2. 2Usar find() com filtro JSON
  3. 3Aplicar $size no campo array
  4. 4Valor exato de elementos (2)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

'Processos'.filter(toArray({reu=2})); — Esta alternativa mistura sintaxe de JavaScript com MongoDB de forma totalmente incorreta. filter é um método de array em JavaScript, não do MongoDB. Além disso, toArray não é usado dessa forma, e a sintaxe {reu=2} usa = em vez de : (que é a notação correta de objeto JSON). Não há nenhum comando válido do MongoDB aqui.

Alternativa B — ❌ Incorreta

db.collection.count({"partes.reu",2}); — O método count existe no MongoDB, mas a sintaxe está errada. O filtro deve ser um objeto JSON com chave: valor, não uma lista separada por vírgula. Além disso, mesmo que a sintaxe fosse corrigida para {"partes.reu": 2}, isso não funcionaria, pois partes.reu é um array, e comparar um array com um número não retorna os documentos com dois réus. O correto seria usar $size.

Alternativa C — ❌ Incorreta

MPU2025.Processos.dataSize("partes.reu"$2); — Esta alternativa usa uma sintaxe completamente inventada. dataSize não é um método de consulta do MongoDB (é um comando de diagnóstico para medir o tamanho dos dados). Além disso, a notação MPU2025.Processos não é a forma de acessar uma coleção no shell do MongoDB (seria db.Processos ou db["Processos"]), e "partes.reu"$2 não é uma expressão válida.

Alternativa D — ✅ Correta ⟵ GABARITO

db["Processos"].find({"partes.reu":{$size:2}}); — Esta é a sintaxe correta. db["Processos"] acessa a coleção Processos (equivalente a db.Processos). O método find() recebe um filtro JSON. O filtro {"partes.reu": {$size: 2}} utiliza o operador $size, que seleciona documentos onde o campo partes.reu (um array) tenha exatamente 2 elementos. Isso retorna exatamente os processos com dois réus.

Alternativa E — ❌ Incorreta

db.Processos.countDocuments({"partes.reu":"2"}); — O método countDocuments conta o número de documentos que correspondem ao filtro, mas o filtro está errado. {"partes.reu": "2"} procura documentos onde o campo partes.reu seja exatamente a string "2", não um array com dois elementos. Como partes.reu é um array, essa consulta não retornaria os processos com dois réus. Além disso, o valor "2" é uma string, não um número, o que agrava o erro.

NÃO CAIA NESSA!

A banca explora a confusão entre consultar por tamanho de array e consultar por valor. Muitos candidatos tentam usar {"partes.reu": 2} (comparação direta) ou countDocuments com um valor, mas o correto é usar o operador $size dentro do find(). Lembre-se: $size é específico para arrays e verifica a quantidade exata de elementos.

PEGA ESSA DICA!

Para questões de MongoDB, memorize os operadores de array: $size (tamanho exato), $all (contém todos os valores), $elemMatch (pelo menos um elemento atende à condição). Quando a pergunta pedir "documentos com N elementos em um campo array", a resposta quase sempre envolve $size.

Gabarito: letra D

Link permanente: /questoes/fg115330