1
resposta

[Dúvida] Qual comando mais simples no MongoDB para listar todos os campos de uma Collection?

Até então esse funcionou, mas gostaria de saber se existe um mais simples...

db.series.aggregate([
  { $project: { fields: { $objectToArray: "$$ROOT" } } },
  { $unwind: "$fields" },
  { $group: { _id: null, fields: { $addToSet: "$fields.k" } } }
])
1 resposta

Oi, Luis, como vai?

Esse comando que você está utilizando é bem completo e funciona bem para retornar todas as chaves únicas contidas em uma coleção.

Para fazer isso de forma mais simples, você pode usar o comando findOne(), que retorna o primeiro documento que corresponde à consulta especificada. Como os documentos em uma Collection geralmente têm a mesma estrutura, você pode usar esse comando para obter uma lista de todos os campos. Clique aqui para acessar a documentação. Ficaria dessa forma:

var doc = db.series.findOne();
print(Object.keys(doc));

Outra opção interessante seria utilizar o distinct, que retorna uma lista dos valores únicos encontrados. Aqui está a documentação.

Seria algo mais ou menos assim:

db.series.distinct(null, { fields: { $exists: true } })

Lembre-se de ajustar para a estrutura do seu projeto.

Espero ter ajudado, Luis. Abraços.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!