Query cypher pour obtenir toutes les étiquettes qui ont plus de 2 nœuds
Question
J'ai un graphique dans lequel chaque composant connecté a une certaine étiquette disons Comp1, Comp2, etc. Je souhaite faire une requête chiffrée qui renvoie toutes les étiquettes qui ont plus d'un nœud. Je reçois toutes les étiquettes comme ceci:
match (n) return labels(n)
J'ai donc essayé de faire quelque chose comme ça afin d'obtenir uniquement les étiquettes dont j'avais besoin:
match (n) with labels(n) as lb where count(k:lb[0]) >= 2) return lb limit 10
mais je reçois une erreur de syntaxe:
entrée invalide ')': chiffres attendus, '.', 'E', blanc, étiquettes de nœud, '[', "= ~", Dans, est "*", "/", "%", '^' ',' + ',' - '-', '<', ', ",", ","">=", '=', "<>", "!=", Et, Xor ou, chargez CSV, commencez, assorti, vous détendez-vous, fusionner, Créer, définir, supprimer, supprimer, payer, avec, retourner, l'union, ';'ou fin d'entrée (ligne 1, colonne 57)
Je voudrais également commander les étiquettes par le nombre de nœuds qui ont cette étiquette ...
La solution
avec 2.1
match (n)
unwind labels(n) as l
with l,count(*) as cnt
where cnt > 2
return l
Autres conseils
Si vous faites cela avec Neo4J Version 2.0, vous pouvez réaliser ce que vous voulez avec cette requête CYPHER:
Start n=node(*)
match (n)-->() with n,count(*) as rel_cnt where rel_cnt >= 2 return n;
Mais soyez conscient que cette requête transversale tout le graphe, il est probablement une bonne idée de le limiter à certaines étiquettes.Bravo.
J'ai lu la question comme des nœuds avec plus de 1 relation, mon mauvais.Cette requête ne fera pas ce que l'OP a demandé.