sql >> Database >  >> NoSQL >> MongoDB

Gebruiken als een grafische database voor het vinden van vrienden van vrienden in MongoDb

Hoewel het niet onmogelijk zou zijn, zou MongoDB niet geschikt zijn voor dit scenario.

De reden is dat MongoDB geen JOINs doet. Als u een query nodig heeft die meerdere documenten omvat, heeft u voor elk document een aparte query nodig.

In uw voorbeeld heeft elke user document zou een array hebben met de _id van hun vrienden. Het vinden van "alle vrienden van de vrienden van UserA die ook vrienden zijn van UserB" zou betekenen dat u:

  1. zoek userA en krijg zijn vrienden-array
  2. vind alle gebruikers in die array en verkrijg hun vriendenarrays
  3. vind alle gebruikers in deze arrays die UserB in hun vriendenarray hebben

Dit zijn drie queries die je moet uitvoeren. Tussen elk van deze zoekopdrachten moet de resultatenset naar de applicatie worden gestuurd, de applicatie moet een nieuwe zoekopdracht formuleren en terugsturen naar de database. De resultatenset die wordt geretourneerd door de 2e zoekopdracht kan behoorlijk groot zijn, wat betekent dat de 3e zoekopdracht enige tijd kan duren.

tl;dr: Gebruik het juiste gereedschap voor de klus. Als uw gegevens op grafieken zijn gebaseerd en u daarop op grafieken gebaseerde query's wilt uitvoeren, gebruikt u een grafiekdatabase.



  1. Hoe kan ik de MongoDB native Javascript-driver beloven met bluebird?

  2. Python + Memcached:efficiënte caching in gedistribueerde applicaties

  3. Parseerfout:syntaxisfout, onverwachte '}' in C:\xampp\htdocs\lib\autors.php op regel 8

  4. Meteor - Waarom zou ik waar mogelijk this.userId boven Meteor.userId() gebruiken?