2012-08-17 6 views
0

J'ai une base de données graphique dans ne04j où les nœuds sont connectés les uns aux autres en fonction d'une relation dirigée (sait). A-> B A-> C A-> E etc.Comment obtenir un tableau de tous les nœuds liés (liés) à un nœud donné (Neo4J + PHP)?

Les noeuds sont indexées fonction de l'ID d'utilisateur I peut donc trouver un noeud quelconque. Aucun problème avec cela.

La question est de savoir comment trouver tous les nœuds qui sont liés au nœud A. Je suppose que cela a quelque chose à voir avec la relation sortante mais je ne sais pas comment l'implémenter réellement. Je suis nouveau à neo4j bien que je comprenne les concepts de graphique impliqués. J'utilise Everyman neo4j php graph api. Dois-je aussi indexer la relation pour réaliser ce que j'essaie de faire ou est-ce possible via une fonction d'obtenir tous les nœuds connectés?

Merci!

Répondre

3

En Neo4jPHP vous pouvez faire:

$node = $client->getNode($nodeId); 
$relationships = $node->getRelationships(array('KNOWS'), 'out'); 
$outgoingNodes = array_map(function ($rel) { 
    return $rel->getEndNode(); 
}, $relationships); 

Ceci est plus performant que Cypher si tout ce que vous voulez faire est de récupérer les nœuds. Utilisez Cypher si vous avez besoin de faire une correspondance de chemin plus compliquée.

Plus d'informations ici: https://github.com/jadell/neo4jphp/wiki/Nodes-and-Relationships sous la section « Récupérer les relations d'un noeud »

+0

Exactement ce que je avais besoin. Thnx :)! –

0

Le problème est indépendant de la conception de votre graphique. En fait, il n'y a aucun problème. exemple en chiffre:

début n = nœud (123) correspondance n-> nœuds renvoyant des nœuds;

retournera tous les nœuds qui ont une relation entrante du noeud n

Questions connexes