【发布时间】:2018-10-11 11:04:27
【问题描述】:
我想写一个查询;
- 更新两个节点之间的关系,如果一个已经存在,或者
- 如果不存在关系,则在两个节点之间创建一个。
实际上,这是允许程序的一个用户“阻止”该程序的另一个用户,而不管这两个用户之前是否有任何类型的关系(可能有任意数量的关系)。 对于查询的一半,如果存在关系,则可选择返回关系;
MATCH (a:user {name: {aParam})
OPTIONAL MATCH (a) -[r]- (b:user {name: {bParam})
RETURN type(r), a
对于查询的另一半,更新两个节点之间的关系(假设它已经存在);
MATCH (a:user {name: {aParam}) <- [r:originalRelationship] - (b:user {name: {bParam})
WITH a, r, b
MERGE (a) - [:updatedRelationship] - (b)
WITH r
DELETE r
但是将两者结合起来,我还没有生成一个可行的例子,我尝试将它们结合在一起,但科学怪人并没有出现;
MATCH (a:user {name: {aParam})
OPTIONAL MATCH (a) - [r] - (b:user {name: {bParam})
WITH a, b, r
MERGE (a) - [:block] -> (b)
WITH r
DELETE r
有人可以在这里指出我的错误并指出正确的方向吗?
【问题讨论】:
-
Neo.DatabaseError.General.UnknownError: org.neo4j.values.storable.NoValue 不能转换为 org.neo4j.values.virtual.NodeValue 我得到错误