web-dev-qa-db-fra.com

Comment supprimer des étiquettes dans neo4j?

Comment supprimer des étiquettes dans neo4j? En fait, j'ai supprimé tous les nœuds et toutes les relations, puis j'ai recréé la base de données de films et les étiquettes que j'avais créées auparavant sont apparues sur l'interface Web. J'ai également essayé d'utiliser un emplacement différent pour la base de données et, même après une désinstallation et une réinstallation des étiquettes, apparaissait toujours. Pourquoi? Où les étiquettes sont-elles stockées? Après la désinstallation du programme, le dossier de la base de données et le dossier appdata ont été supprimés.

Comment se reproduire? Installez neo4j -> utilisez l'exemple de base de données de films -> create (l: SomeLabel {nom: "Une étiquette bizarre"}) -> supprimez le nœud -> arrêtez neo, créez un nouveau dossier -> démarrez neo -> créez un film -> match (n) return (n) -> SomeLabel apparaît, même si vous avez modifié le dossier ou effectué une désinstallation/installation.

Y a-t-il un moyen de supprimer des étiquettes même s'il n'y a pas de nœud avec?

24
Matthias Baumgart

Pour le moment (Neo4j 2.0.1), il n’existe aucun moyen de supprimer explicitement une étiquette une fois celle-ci créée. Neo4j Browser affiche toutes les étiquettes signalées par le noeud final REST à: 

http://localhost:7474/db/data/labels

Séparément, la barre latérale du navigateur Neo4j, qui affiche les étiquettes, n’actualise pas correctement la liste lorsqu’elle perd la connexion avec Neo4j. Un rechargement de navigateur Web devrait fonctionner. 

Enfin, il y avait un bogue dans la visualisation de Neo4j Browser qui permettait d'afficher toutes les étiquettes pour lesquelles un style avait été créé. Si vous utilisez une version de Neo4j comportant le bogue, vous pouvez effacer le style en cliquant sur "Afficher la feuille de style" dans l'inspecteur de propriétés, puis en cliquant sur l'icône d'extincteur. Tout cela nécessite certes une amélioration de la convivialité. 

Cordialement, Andreas

13
akollegger

Cela semble être résolu par la version 2.3.0. 

Par exemple, supposons que nous ayons créé un film dans le navigateur de données, tel que:

CREATE(m:Movie:Cinema:Film:Picture{title:"The Matrix"})

On pourrait l'interroger avec

MATCH(m:Movie)
WHERE m.title = "The Matrix"
RETURN m

Il aurait 4 étiquettes: Movie, Cinema, Film et Picture

Pour supprimer l'étiquette Picture de tous les films:

MATCH(m:Movie)
REMOVE m:Picture
RETURN m

Pour supprimer l'étiquette Picture d'un seul film:

MATCH(m:Movie)
WHERE m.title = "The Matrix"
REMOVE m:Picture
RETURN m
8
ThisClark

Supposons que nous ayons créé un noeud Produit comme ci-dessous.

PRODUCT_MASTER { product_code :"ABC", product_name:"XYX }

CREATE INDEX ON :PRODUCT_MASTER (product_code);

Maintenant, même si je supprime tous les noeuds PRODUCT_MASTER du graphe, nous continuerons d’obtenir PRODUCT_MASTER dans le navigateur sous les étiquettes de noeud. Pour se débarrasser de la même chose, nous devons également supprimer l’index.

DROP INDEX ON :PRODUCT_MASTER (product_code);

Dans neo4j-Shell, tapez la commande "schema" pour obtenir la liste des index et les propriétés correspondantes.

Pour résumer, si nous supprimons tous les nœuds d'un type particulier, vous devez également supprimer des index sur ce nœud.

3
Gyro

Je viens de trouver une solution de contournement (avec neo4j 2.2 M04). Videz le contenu de la base de données dans un fichier, jetez la base de données, puis insérez à nouveau le vidage. Ne fonctionne que pour les petites bases de données, cependant.

Étape 1: vider le contenu en utilisant neo4j-Shell

$NEO4J_HOME/bin/> neo4j-Shell -c 'dump match a return a;' > dump.temp

Étape 2: jetez la base de données (Il existe de nombreuses façons de supprimer le dossier $ NEO4J_HOME/data/graph.db/ou quel que soit votre dossier de base de données)

Étape 3: réinsérez le dump en utilisant neo4j-Shell

$NEO4J_HOME/bin/> neo4j-Shell -file dump.temp

Cela devrait permettre d’obtenir des statistiques sur le nombre de nœuds, de relations, de propriétés et d’étiquettes créés.

(Et l'étape 4 serait de supprimer ce fichier dump.temp, il n'a aucune raison de vivre dans le dossier bin.)

Ce que je trouve étrange (et peut-être que Michael ou quelqu'un d'autre de neo4j pourrait nous éclairer): dans mon cas, Step3 m'a dit que plus de 50 labels avaient été créés. Cependant, lorsque j'ouvre l'interface Web, seules les 15 ou plus étiquettes que j'utilise réellement sont répertoriées. Donc, la DB se sent nettoie maintenant. Pas tout à fait sûr que ça est propre.

0
rene

La raison en est que lors de la création d'une étiquette, Neo4j indexe cette étiquette. Vous pouvez supprimer le nœud mais l'index restera.

En un tour de main - si vous supprimez l'index de l'étiquette, il disparaîtra de l'interface graphique (NOTE: je n'ai pas encore accès à Neo4j pour vérifier cette théorie)

0
joe

À partir d'aujourd'hui, avec Neo4j Desktop Version: 1.1.10 et DB Version: 3.4.7 Supprimer données + supprimer Index + supprimer toute contrainte unique + Développeur> Actualiser efface toutes les étiquettes

0
Namrata