web-dev-qa-db-ja.com

neo4jでラベルを削除する方法

Neo4jでラベルを削除する方法実際にすべてのノードと関係を削除してから、映画データベースを再作成しましたが、以前に作成したラベルをWebインターフェースに表示しました。また、データベースに別の場所を使用しようとしましたが、アンインストールして再インストールした後でもラベルが表示されました。どうして?ラベルはどこに保存されていますか?プログラムをアンインストールした後、データベースフォルダーとappdataフォルダーが削除されました。

再現するには? neo4jをインストール->ムービーデータベースの例を使用->作成(l:SomeLabel {name: "A freaky label"})->ノードを削除-> neoを停止、新しいフォルダを作成-> neoを開始->ムービーシェマを作成-> match(n)return(n)->フォルダーを変更したり、アンインストール/インストールを行ったりしても、SomeLabelが表示されます。

ノードがなくてもラベルを削除する方法はありますか?

26

現時点では(Neo4j 2.0.1)作成したラベルを明示的に削除する方法はありません。 Neo4jブラウザは、RESTエンドポイントによって報告されるすべてのラベルを表示します。

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

これとは別に、Neo4jとの接続が失われると、ラベルを表示するNeo4j Browserサイドバーはリストを適切に更新しません。 Webブラウザーのリロードが機能するはずです。

最後に、Neo4j Browserの視覚化に、スタイルが作成されたすべてのラベルを表示するバグがありました。バグのあるバージョンのNeo4jを使用している場合は、プロパティインスペクターの[スタイルシートの表示]をクリックし、消火器のアイコンをクリックすると、スタイルをクリアできます。確かに、そのすべてにユーザビリティの改善が必要です。

乾杯、アンドレアス

15
akollegger

これはバージョン2.3.0で解決したようです。

例として、データブラウザで次のようなムービーを作成したとします。

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

それをクエリすることができます

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

ラベルは4つあります:MovieCinemaFilmPicture

すべての映画からPictureラベルを削除するには:

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

その1つの映画のみからPictureラベルを削除するには:

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

以下のようにノード製品を作成したと仮定します

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

CREATE INDEX ON :PRODUCT_MASTER (product_code);

これで、グラフからすべてのPRODUCT_MASTERノードを削除しても、ブラウザのPRODUCT_MASTERをNodeラベルの下に表示し続けます。同じを取り除くには、インデックスも削除する必要があります。

DROP INDEX ON :PRODUCT_MASTER (product_code);

neo4j-Shellでは、「schema」コマンドを入力して、インデックスと対応するプロパティのリストを取得します。

要約すると、特定のタイプのノードをすべて削除する場合は、そのノードのインデックスも削除する必要があります。

3
Gyro

回避策を見つけました(neo4j 2.2 M04)。 DBのコンテンツをファイルにダンプし、DBを破棄して、ダンプを再度挿入します。ただし、小さなDBでのみ機能します。

ステップ1:neo4j-Shellを使用してコンテンツをダンプする

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

ステップ2:DBを破棄する($ NEO4J_HOME/data/graph.db /フォルダー、またはDBフォルダーがどこにあっても削除する方法はたくさんあります)

手順3:neo4j-Shellを使用して、ダンプを再度挿入する

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

これにより、作成されたノード、関係、プロパティ、ラベルの数に関する統計が表示されます。

(そして、Step4はそのdump.tempファイルを削除することになるでしょう、それはbinフォルダー内に存在する理由はありません。)

私が奇妙だと思うこと(そして、Michaelやneo4jの他の誰かがこれに光を当てることができるかもしれません):私の場合、Step3はいくつかの50以上のラベルが作成されたことを教えてくれました。ただし、Webインターフェイスを開くと、実際に使用している15個程度のラベルのみが表示されます。つまり、DB feels cleanです。 isであるかどうかは完全にはわかりません。

0
rene

その理由は、ラベルが作成されると、Neo4jがこのラベルにインデックスを付けるためです。ノードを削除できますが、インデックスは残ります。

推測では-インデックスをラベルにドロップすると、GUIから消えます(注-現在、この理論を確認するためにNeo4jにアクセスできません)

0
joe

私は単に:

  • neo4jを停止する
  • データベース全体を削除すると、すべてが削除されます
  • neo4jを起動

macでは、dbはここにあります/usr/local/var/neo4j/data/databases/graph.db

0
user2228895

現在、Neo4j Desktopバージョン:1.1.10およびDBバージョン:3.4.7では、データの削除+インデックスの削除+一意の制約の削除+開発者>更新により、すべてのラベルがクリアされます

0
Namrata