我使用以下示例查询创建一个带标签的节点。
SELECT *
FROM cypher('vg-graph', $$
CREATE (m:Movie {name: "Movie Name", uid: "12345678", body: "Description"})
$$) as (n agtype);
以下查询应从节点中删除标签“Movie”。
SET search_path TO ag_catalog;
SELECT *
FROM cypher('vg-graph', $$
MATCH (n {uid:"12345678"})
REMOVE n:Movie
RETURN n
$$) as (n agtype);
但产生ERROR: syntax error at or near ":"
我如何以其他方式完成同样的任务?
9条答案
按热度按时间tpxzln5u1#
目前,您不能从节点或边中删除标签名称,因为节点/边的ID是从最初分配给标签的序列ID中给出的,因此将实体存在与其标签耦合。
因此,这样的无效操作将导致错误。
但是,正在将实体ID与标签ID分离。这将允许更新/删除现有标签并向实体添加多个标签。
ffscu2ro2#
目前,无法从节点或边中删除标签名称,因为实体的ID与标签相关联。删除标签将使实体的存在无效,从而导致错误。
lpwwtiir3#
从节点或边删除标签将在Apache AGE中返回错误,因为每个节点或边都与创建时传递的标签链接。
mwkjh3gx4#
密码查询没有内置的子句来删除标签名称,相反,您可以使用以下查询重命名它。
你可以从这个Github issue link得到更多的信息,因为它已经在那里提出了。
q43xntqr5#
标签修改和拥有多个标签的功能尚未添加到Apache AGE中。目前AGE根据创建时给出的标签为顶点分配id。由于id是不可变的,并且基本上与标签名称相关,因此删除标签、修改标签或拥有多个标签都是不受支持的任务。
然而,也有一些项目正在实施同样的措施。你可以在这里关注他们https://github.com/apache/age/issues/772
xmd2e60i6#
当前不支持从AGE中的节点删除标签。然而,正在努力实现该功能。同时,您可以通过创建一个具有相同属性但不同标签的新节点来完成任务。
vc9ivgsu7#
目前,正在开发直接使用
REMOVE
子句删除节点。目前,您可以像上面的答案那样使用SET
子句使用替代解决方案。v2g6jxz68#
您看到“语法错误at or near“:””的错误是因为从现在起,不允许从节点中删除标签名称,因为节点与标签链接。
wgxvkvu99#
在github上有一个问题,解释为什么你不能从节点中删除标签。它还没有添加到APACHE年龄。
Issue