Espero que alguém possa ajudar.
Herdei um projeto que utiliza um banco de dados Atlas Mongo. Fui solicitado a obter dados de uma coleção. Suponha que os documentos estejam estruturados na coleção da seguinte forma:
{ _id: 'Parent1', kids: [ { _id: 'Test1', grandkids: [ { name: 'Blah' } ] } ] },
{ _id: 'Parent2', kids: [ { _id: 'Test1', grandkids: [ { name: 'Bloh' } ] } ] },
{ _id: 'Parent3', kids: [ { _id: 'Test2', grandkids: [ { name: 'Bloh' } ] } ] }
Preciso obter o neto com o nome 'Bloh' quando o _id da criança for 'Teste 1', o que deve retornar dados do 2º documento.
Usando a interface web do Cloud MongoDb, tentei consultar assim, só para ver se conseguia obter o segundo documento de volta:
{
'$and': [
{ 'kids._id': ObjectId('Test 1') },
{ 'kids.grandkids.name': 'Bloh' }
]
}
Mas não obtive nenhum resultado. Suspeito que possa ser porque o _id em kids não é único.
Supondo que eu consiga o segundo documento de volta, como faço para obter o neto correspondente de volta?
Desde já, obrigado!
Editar:
Usando o playground MongoDb, isso pode ser um problema:
Consulta inválida:
Linha 3: ObjectId inválido: o hash deve ter 24 caracteres
Infelizmente, kid._id não só é duplicado, como também nem sempre tem 24 caracteres.