MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - exemplo de referências manuais


A documentação é bastante clara na seção do manual a que você está se referindo, que é a seção sobre Referências de banco de dados . A parte mais importante para compreender isso está contida na declaração de abertura na página:

As informações adicionais abrangem o tópico de como você pode optar por lidar com o acesso a dados que você armazena em outra coleção.

Existe o DBRef especificação que, sem entrar em muitos detalhes, pode ser implementado em alguns drivers de forma que, quando encontrados em seus documentos, eles recuperem (expandam) automaticamente o documento referenciado no documento atual. Isso seria implementado "nos bastidores" com outra consulta a essa coleção para o documento desse _id.

No caso de Referências de manual isso está basicamente dizendo que há apenas um campo em seu documento que tem como conteúdo o ObjectId de outro documento. Isso só difere do DBRef como algo que nunca ser processado por uma implementação de driver base deixa como você lida com qualquer recuperação adicional desse outro documento apenas para você.

No caso de:
> db.collection.findOne()

{
   _id: <ObjectId>,
   name: "This",
   something: "Else",
   ref: <AnotherObjectId>
}

A ref campo no documento nada mais é do que um ObjectId simples e não faz nada de especial. O que isso permite que você faça é enviar sua própria consulta para obter os detalhes do objeto a que se refere:
> db.othercollection.findOne({ _id: <AnotherObjectId > })
{
  _id: <ObjectId>
  name: "That"
  something: "I am a sub-document to This!"
}

Lembre-se de que tudo isso é processado no lado do cliente por meio da API do driver. Nenhuma dessas buscas de outros documentos acontece no servidor em qualquer caso.