如何删除neo4j中的标签?实际上我删除了所有节点和关系,然后我重新创建了电影数据库,仍然是我之前创建的标签出现在web界面上。我还试图为数据库使用不同的位置,甚至在卸载并重新安装后仍然会出现标签。为什么?标签存放在哪里?卸载程序后,数据库文件夹和appdata文件夹被删除。
如何重现?安装neo4j - >使用电影数据库示例 - > create(l:SomeLabel {name:“a a freaky label”}) - >删除节点 - >停止neo,创建新文件夹 - >开始新 - >创建电影shema - > match(n)return(n) - >即使您更改了文件夹或进行卸载/安装,也会显示SomeLabel。
有没有办法删除标签,即使它没有节点?
答案 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
,Movie
,Cinema
和Film
从所有电影中移除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)
我只是:
在Mac上,数据库在这里 /usr/local/var/neo4j/data/databases/graph.db
答案 7 :(得分:0)
如果删除该标签的索引,则它将从数据库中删除标签。