Neo4j cypher在创建对象属性时与合并不匹配

Neo4j cypher在创建对象属性时与合并不匹配,neo4j,cypher,Neo4j,Cypher,我想知道是否还有其他方法可以做到这一点,因为当我试图用一个对象设置一组属性时,它显然不起作用 例如,我创建了一个引用节点create(t:reference{name:'reference'}) 然后我接收到一些属性,比如说,我想在一个与Reference节点有关系的节点中设置这些属性 匹配(参考:参考) 其中ref.name='reference' 带参考号 merge(t:Test{uuid:'123'})-[:merge\u Test]->(ref) 在创建集时,t={name1:'一个

我想知道是否还有其他方法可以做到这一点,因为当我试图用一个对象设置一组属性时,它显然不起作用

例如,我创建了一个引用节点
create(t:reference{name:'reference'})

然后我接收到一些属性,比如说,我想在一个与
Reference
节点有关系的节点中设置这些属性


匹配(参考:参考)
其中ref.name='reference'
带参考号
merge(t:Test{uuid:'123'})-[:merge\u Test]->(ref)
在创建集时,t={name1:'一个名称',name2:'另一个名称'},t.created=timestamp(),t.updated=timestamp()
在匹配集t.updated=timestamp()上
返回t

您可能会认为运行上述密码2次,第一次会首先创建它,第二次只会更新t:Test的
updated
属性,但事实并非如此,每次都会创建一个新的密码,就好像合并从未检测到
uuid
匹配一样

我已经从create上的
中删除了
t={name1:'a name',name2:'other name'}
,它按预期工作,即第二次运行将更新
updated
属性,而不是创建新的
:Test
节点。即:


匹配(参考:参考)
其中ref.name='reference'
带参考号
merge(t:Test{uuid:'123'})-[:merge\u Test]->(ref)
在创建集合时,t.name1='a name',t.name2='other name',t.created=timestamp(),t.updated=timestamp()
在匹配集t.updated=timestamp()上
返回t

但这对我来说不起作用,因为我在我的集合中接收到一组没有时间戳的混合属性,并希望用t={my_main_properties}集合来设置它

想知道这是Cypher中的一个bug还是我完全错过了文档中的某些内容?如果两者中有一个,那么解决办法是什么


使用Neo4j 2.1.3,我想我刚刚了解了这里发生的事情,该操作的创建阶段不会设置uuid,因此第二次将再次创建uuid。所以这就好像:


关于创建集t={params}

清除合并中定义的属性:


合并(t:Test{uuid:'123'})-[:。。。

在这里,uuid被创建时删除


解决方法是在
params
对象中定义它。

还有
t+={params}