如何删除neo4j中的标签?

时间:2014-02-24 09:18:43

标签: neo4j

如何删除neo4j中的标签?实际上我删除了所有节点和关系,然后我重新创建了电影数据库,仍然是我之前创建的标签出现在web界面上。我还试图为数据库使用不同的位置,甚至在卸载并重新安装后仍然会出现标签。为什么?标签存放在哪里?卸载程序后,数据库文件夹和appdata文件夹被删除。

如何重现?安装neo4j - >使用电影数据库示例 - > create(l:SomeLabel {name:“a a freaky label”}) - >删除节点 - >停止neo,创建新文件夹 - >开始新 - >创建电影shema - > match(n)return(n) - >即使您更改了文件夹或进行卸载/安装,也会显示SomeLabel。

有没有办法删除标签,即使它没有节点?

8 个答案:

答案 0 :(得分:14)

目前还没有(Neo4j 2.0.1)一种在创建标签后明确删除标签的方法。 Neo4j浏览器将显示REST端点报告的所有标签:

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

另外,显示标签的Neo4j浏览器侧边栏在与Neo4j失去连接时无法正确刷新列表。 Web浏览器重新加载应该工作。

最后,Neo4j Browser的可视化中存在一个错误,它会显示已创建样式的所有标签。如果使用具有该错误的Neo4j版本,您可以通过单击属性检查器中的“查看样式表”,然后单击灭火器图标来清除样式。诚然,所有这些都需要提高可用性。

干杯, 安德烈亚斯

答案 1 :(得分:10)

这似乎是由版本2.3.0解决的。

例如,假设我们在数据浏览器中创建了一部电影,例如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:clickable="true"
    tools:context="com.example.kubitas.pizzamotolapp.Jidlo"
    android:id="@+id/ListJidlo">

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/chbObjednat"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/txtID"
        android:layout_toEndOf="@+id/txtID"
        android:onClick="onCheckBoxClicked"
        android:nestedScrollingEnabled="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/txtNazev"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/chbObjednat"
        android:layout_toEndOf="@+id/chbObjednat" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imgJidlo"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="1."
        android:id="@+id/txtID"
        android:layout_alignBottom="@+id/chbObjednat"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

我们可以用

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

它有4个标签:MATCH(m:Movie) WHERE m.title = "The Matrix" RETURN m MovieCinemaFilm

从所有电影中移除Picture标签:

Picture

仅从一部电影中删除MATCH(m:Movie) REMOVE m:Picture RETURN m 标签:

Picture

答案 2 :(得分:3)

我们假设我们已经创建了一个节点Product,如下所示

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

CREATE INDEX ON :PRODUCT_MASTER (product_code);

现在,即使我从图表中删除了所有PRODUCT_MASTER节点,我们也会继续在Node标签下的浏览器中获取PRODUCT_MASTER。为了摆脱这种情况,我们也需要删除索引。

DROP INDEX ON :PRODUCT_MASTER (product_code);

在neo4j-shell中输入&#34; schema&#34;命令获取索引列表和相应的属性。

总而言之,如果我们删除特定类型的所有节点,您还需要删除该节点上的索引。

答案 3 :(得分:0)

原因是当创建标签时,Neo4j会对此标签编制索引。您可以删除节点,但索引将保留。

猜测 - 如果你在标签上放下索引,它将从GUI中消失(注意 - 我现在还没有访问Neo4j来检查这个理论)

答案 4 :(得分:0)

我刚找到一个解决方法(使用neo4j 2.2 M04)。将DB的内容转储到文件中,丢弃数据库,然后再次插入转储。但是只适用于小型数据库。

步骤1:使用neo4j-shell

转储内容

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

Step2:扔掉DB (有很多方法可以删除文件夹$ NEO4J_HOME / data / graph.db /或者你的DB文件夹在哪里)

步骤3:使用neo4j-shell

再次插入转储

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

这应该会显示已创建的节点,关系,属性和标签的数量。

(而Step4将删除dump.temp文件,它没有理由住在bin文件夹中。)

我觉得奇怪(也许迈克尔或其他来自neo4j的人可以对此有所了解):在我的情况下,Step3告诉我已经创建了大约50多个标签。但是,当我打开Web界面时,只列出了我实际使用的那些15个左右的标签。所以DB 现在感觉干净了。不完全确定它干净。

答案 5 :(得分:0)

截止到今天,Neo4j桌面版本:1.1.10和数据库版本:3.4.7 删除数据+删除索引+删除任何唯一的约束+开发人员>刷新会清除所有标签

答案 6 :(得分:0)

我只是:

  • 停止neo4j
  • 删除整个数据库,然后删除所有内容
  • 启动neo4j

在Mac上,数据库在这里 /usr/local/var/neo4j/data/databases/graph.db

答案 7 :(得分:0)

如果删除该标签的索引,则它将从数据库中删除标签。