Fondamentalmente un DBRef è un ObjectID che si autodescrive che un helper lato client, che esiste in tutti i driver (penso in tutti), offre la possibilità all'interno della tua applicazione di ottenere facilmente righe correlate.
Non sono:
- Unisciti
- Relazioni a cascata
- Relazioni lato server
- Risolto lato server
Inoltre, non vengono utilizzati in Map Reduce, la funzionalità è stata eliminata a causa di complicazioni con il partizionamento orizzontale.
Tuttavia, non è sempre fantastico usarli, perché occupano un bel po' di spazio se si conosce la raccolta correlata a quella riga rispetto alla semplice memorizzazione dell'ObjectID. Non solo, ma a causa del modo in cui vengono risolti, ogni record correlato deve essere caricato in modo pigro uno per uno invece se è in grado di formare un intervallo (facilmente) per eseguire query per righe correlate tutto in una volta, in modo che possano aumentare la quantità di query fai anche al database, a sua volta aumentando i cursori.