neo4j comment renvoyer toutes les étiquettes de nœud avec Cypher?

Je ne trouve pas comment renvoyer des étiquettes de nœud avec Cypher.

Quelqu'un connaît la syntaxe de cette opération?

41
demandé sur Sovos 2013-08-23 12:46:06

7 réponses

Il existe une fonction labels (node) qui peut renvoyer toutes les étiquettes d'un nœud.

44
répondu Lisa Li 2013-08-23 12:10:31

Pour obtenir toutes les étiquettes de nœud distinctes:

MATCH (n) RETURN distinct labels(n)

Pour obtenir le nombre de nœuds pour chaque étiquette:

MATCH (n) RETURN distinct labels(n), count(*)
55
répondu petra 2017-03-14 22:49:45

Si vous voulez toutes les étiquettes individuelles (pas les combinaisons), vous pouvez toujours développer les réponses:

MATCH (n)
WITH DISTINCT labels(n) AS labels
UNWIND labels AS label
RETURN DISTINCT label
ORDER BY label
15
répondu ErnestoE 2016-08-14 10:38:07

Neo4j 3.0 a introduit la procédure db.labels() qui renvoie toutes les étiquettes disponibles dans la base de données. Utilisation:

call db.labels();
7
répondu Bruno Peres 2017-12-18 12:45:18
 START n=node(*) RETURN labels(n)
5
répondu gaurav.singharoy 2013-12-02 16:34:32

Si vous utilisez l'API Java, vous pouvez rapidement obtenir un itérateur de tous les Labels dans la base de données comme ceci:

GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
3
répondu Ken Williams 2015-06-29 20:10:34

Si vous voulez obtenir les étiquettes de spécifier un nœud, puis utilisez labels(node); Si vous voulez seulement obtenir toutes nœud étiquettes dans neo4j, puis utilisez cette fonction à la place: call db.labels;, jamais, jamais utiliser cette requête: MATCH n RETURN DISTINCT LABELS(n). Il fera une analyse complète de la table, ce qui est très très lent..

2
répondu arganzheng 2017-12-09 03:25:50