Basicamente, um DBRef é um ObjectID auto-descritivo que um ajudante do lado do cliente, que existe em todos os drivers (acho que todos), fornece a capacidade dentro de seu aplicativo de obter linhas relacionadas facilmente.
Eles não são:
- JUNTOS
- Relações em cascata
- Relações do lado do servidor
- Resolvido no lado do servidor
Eles também não são usados no Map Reduce, a funcionalidade foi retirada devido a complicações com o sharding.
No entanto, nem sempre é ótimo usá-los, pois eles ocupam um pouco de espaço se você conhecer a coleção relacionada a essa linha em comparação com apenas armazenar o ObjectID. Não apenas isso, mas devido à forma como eles são resolvidos, cada registro relacionado precisa ser carregado lentamente um por um, se for capaz de formar um intervalo (facilmente) para consultar linhas relacionadas de uma só vez, para que possam aumentar a quantidade de consultas você faz para o banco de dados também, por sua vez, aumentando os cursores.