在保持当前属性的同时更新具有属性列表的节点(不使用SET n.prop ='x')

时间:2013-12-11 12:56:36

标签: cypher

Cypher SET n={properties}替换节点的所有属性,是否有办法只更新属性集合中定义的属性而不破坏属性中未定义的当前属性?

对我来说这将是一团糟,因为我必须在我的验证过滤掉所允许的内容之后一直定义所有值并更新cypher查询:

SET n.fname = {properties}.fname, n.lname = {properties}.lname, n.age = 18, ...

据我所知,这将保留我在SET中未定义的先前属性。

我宁愿在我的收藏中使用SET这样的内容,并保留未定义的属性。

SET n = {properties}  // but not destroy properties not defined in properties collection

如果没有办法,是否有可能获得所有这些,然后根据同一查询中传递的集合al合并它们?否则我将首先做一个get,然后合并它们,然后做一套。

使用Neo4j 2.0

3 个答案:

答案 0 :(得分:2)

他们在版本2.0.1中引入了MERGE。那应该可以解决你的问题。 http://docs.neo4j.org/chunked/milestone/query-merge.html

答案 1 :(得分:1)

您可以使用SET n += {props}。我想它从2.1.0开始就可以使用。

答案 2 :(得分:0)

此时,使用密码进行一次拍摄是不可能的。对地图的支持是相当新的(阅读:有限),因此期望在未来看到改进。以下是一些相关的Github问题,如果您想要跟进进度:

https://github.com/neo4j/neo4j/issues/33

https://github.com/neo4j/neo4j/issues/1695

https://github.com/neo4j/neo4j/issues/1696