MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwendung als Diagrammdatenbank zum Finden von Freunden von Freunden in MongoDb

Obwohl es nicht unmöglich wäre, wäre MongoDB für dieses Szenario nicht gut geeignet.

Der Grund dafür ist, dass MongoDB keine JOINs durchführt. Wenn Sie eine Abfrage benötigen, die sich über mehrere Dokumente erstreckt, benötigen Sie für jedes Dokument eine separate Abfrage.

In Ihrem Beispiel jeder user document hätte ein Array mit der _id 's ihrer Freunde. Um „alle Freunde der Freunde von BenutzerA, die auch Freunde von BenutzerB sind“ zu finden, würden Sie Folgendes tun:

  1. finde userA und hole sein Freunde-Array
  2. finde alle Benutzer in diesem Array und erhalte ihre Freundes-Arrays
  3. alle Benutzer in diesen Arrays finden, die UserB in ihrem Freunde-Array haben

Dies sind drei Abfragen, die Sie ausführen müssen. Zwischen jeder dieser Abfragen muss die Ergebnismenge an die Anwendung gesendet werden, die Anwendung muss eine neue Abfrage formulieren und sie an die Datenbank zurücksenden. Die Ergebnismenge, die von der 2. Abfrage zurückgegeben wird, kann ziemlich groß sein, was bedeutet, dass die 3. Abfrage eine Weile dauern kann.

tl;dr: Verwenden Sie das richtige Werkzeug für den Job. Wenn Ihre Daten grafikbasiert sind und Sie grafikbasierte Abfragen darauf durchführen möchten, verwenden Sie eine Graphdatenbank.