我需要从我的图中删除一些节点属性。按照cypher指南,我尝试了以下操作:
START n=node(1)
DELETE n.property
RETURN n
我收到了一个错误信息:
Expression `Property` yielded `true`. Don't know how to delete that.
我可以在console.neo4j.org上复制这个问题。您应该如何删除节点的属性?
你使用的是哪个版本的Neo4j? 自从Neo4j 2.0 (我不确定具体是哪个里程碑版本,但我尝试过M03),属性不再是“删除”而是“移除”:
START n=node(1)
REMOVE n.property
RETURN n
应该与Neo4j 2.x兼容。
文档中也有相关说明。在页面的右侧(可能需要加载一些时间后),您可以选择Neo4j版本的下拉菜单。当您进入DELETE文档并选择2.0.0-M03里程碑时,您会注意到“删除属性”菜单项消失了(指向M03 DELETE文档的链接:http://docs.neo4j.org/chunked/2.0.0-M03/query-delete.html)。
相反,在2.0.0-M03的REMOVE文档中(这里:http://docs.neo4j.org/chunked/2.0.0-M03/query-remove.html)现在列出了“删除属性”部分。
只是另一个例子。
对于 Neo4j 3.0,假设有一个带有属性键名和年龄的节点,删除年龄属性也是有效的:
创建此节点:
CREATE (n {name:'Andres', age:25}) return n
删除age属性的键:
MATCH (andres { name: 'Andres' }) REMOVE andres.age RETURN andres
来自Neo4j 3.0文档 https://neo4j.com/docs/developer-manual/current/cypher/#query-remove
目标是:
从我的图形中删除一些节点属性
如果您的节点类型为“Thing”,并且您想要删除名为“size”的属性,则可以使用以下方法从所有节点中删除该属性:
MATCH (t:Thing)
REMOVE t.size
MATCH (a:Application {name:'A'})-[r:REQUEST_TO]-(d:Application {name:'B'})
WHERE ID(r) = 684
REMOVE r.property