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?
7 réponses
Il existe une fonction labels (node) qui peut renvoyer toutes les étiquettes d'un nœud.
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(*)
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 renvoie toutes les étiquettes disponibles dans la base de données. Utilisation:
call db.labels();
Si vous utilisez l'API Java, vous pouvez rapidement obtenir un itérateur de tous les Label
s dans la base de données comme ceci:
GraphDatabaseService db = (new GraphDatabaseFactory()).newEmbeddedDatabase(pathToDatabase);
ResourceIterable<Label> labs = GlobalGraphOperations.at(db).getAllLabels();
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..