2017-07-22 2 views
1

Je veux entrer/sortir le degré d'un nœud donné dans neo4j. Une façon est d'utiliser la requête suivante:Pouvons-nous entrer/sortir le degré d'un noeud en O (1) temps pour un noeud dans neo4j?

MATCH (u: Node{ name: 'Node 1' })-[]->(v) RETURN count(v);

Cela nécessite la recherche pour les relations de u.

L'autre façon est de continuer à mettre à jour les degrés de nœuds au fur et à mesure qu'ils sont insérés et ensuite nous pouvons obtenir le degré en trouvant simplement le nœud. Est-ce que nous devons le maintenir nous-mêmes ou neo4j le gère, de sorte que nous puissions obtenir les degrés en trouvant simplement le nœud. Je veux le faire soit par une requête chiffrée ou dans un pilote python.

Répondre

3

Oui, la fonction size() est l'équivalent de la méthode Java getDegree() sur un nœud et est O (1) Fonctionnement:

Retour entrants et sortants:

MATCH (u: Node{ name: 'Node 1' }) 
RETURN size((u)-->()) AS degreeOut, 
size((u)<--()) as degreeIn 

Ceci est également équivalent si vous vouloir par un type de relation spécifique:

MATCH (u: Node{ name: 'Node 1' }) 
RETURN size((u)-[:FOLLOWS]->()) AS followingCount