Je ne trouve pas comment renvoyer les étiquettes d'un nœud avec Cypher.
Quelqu'un connaît la syntaxe de cette opération?
Il existe une étiquette de fonction (nœud) qui peut renvoyer toutes les étiquettes d'un nœud.
Pour obtenir toutes les étiquettes de nœuds distinctes:
MATCH (n) RETURN distinct labels(n)
Pour obtenir le nombre de nœuds pour chaque étiquette:
MATCH (n) RETURN distinct labels(n), count(*)
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
Neo4j 3.0 a introduit la procédure db.labels()
qui retourne toutes les étiquettes disponibles dans la base de données. Utilisation:
call db.labels();
START n=node(*) RETURN labels(n)
Si vous utilisez l'API Java, vous pouvez rapidement obtenir un itérateur de tous les Label
dans la base de données comme ceci:
GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
Si vous souhaitez obtenir les étiquettes d'un nœud spécifié, utilisez labels(node)
; Si vous ne souhaitez obtenir que toutes les étiquettes de noeud dans neo4j, utilisez plutôt cette fonction: call db.labels;
, N'utilisez jamais cette requête: MATCH n RETURN DISTINCT LABELS(n)
. Il fera un scan complet de la table, ce qui est très très lent.