MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo come database grafico per trovare amici di amici in MongoDb

Anche se non sarebbe impossibile, MongoDB non sarebbe adatto a questo scenario.

Il motivo è che MongoDB non esegue JOIN. Quando hai bisogno di una query che si estende su più documenti, hai bisogno di una query separata per ogni documento.

Nel tuo esempio, ogni user il documento dovrebbe avere un array con _id 's dei loro amici. Trovare "tutti gli amici degli amici dell'UtenteA che sono anche amici dell'UtenteB" significherebbe che:

  1. trova l'utenteA e ottieni i suoi amici-array
  2. trova tutti gli utenti in quell'array e ottieni i loro array di amici
  3. trova tutti gli utenti in questi array che hanno UserB nell'array amici

Queste sono tre query che devi eseguire. Tra ciascuna di queste query, il set di risultati deve essere inviato all'applicazione, l'applicazione deve formulare una nuova query e rispedirla al database. Il set di risultati restituito dalla seconda query può essere piuttosto grande, il che significa che la terza query potrebbe richiedere del tempo.

tl;dr: Usa lo strumento giusto per il lavoro. Quando i tuoi dati sono basati su grafici e desideri eseguire query basate su grafici su di essi, utilizza un database di grafici.