neo4j 在查询中使用APOC.的正确方法是什么?

z31licg0  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(147)

我需要根据rel_type变量选择不同的节点。所以如果可以从APOC.when返回一个节点,对我来说是理想的。作为替代方法,返回匹配节点的ID是可以的。我如何通过这些方法之一解决这个任务?
Legal_EntityNatural_Person是我们感兴趣的一类节点;
hid_party--每个节点具有的参数,用作唯一ID;
rel_type可以是“法律的”或“PHYSICAL”。应根据此参数选择不同的节点。
示例:

match (legal:Legal_Entity {hid_party : '157456674'})
with legal,
     '422741957' as second_hid,
     'LEGAL' as rel_type

     CALL apoc.when(
        'LEGAL' = 'LEGAL',
        'match (second:Legal_Entity {hid_party : second_hid}) return second as second_node',
        'match (second:Natural_Person {hid_party : second_hid}) return second as second_node',
        {second_hid:second_hid}
        ) YIELD value

return value.second_node
o2g1uqev

o2g1uqev1#

您的查询应该可以工作,但可能我们忽略了如何将rel类型作为参数传递。
简单举例:
存根图

CREATE (:LegalEntity {id: 123})
CREATE (:NaturalPerson {id: 456})

然后在浏览器中设置虚拟参数

:param relType => 'LEGAL'

验证可用于查询的参数列表

:params

// result
{
  "relType": "LEGAL"
}


根据参数使用apoc.when的示例

CALL apoc.when($relType = 'LEGAL', 
'MATCH (n:LegalEntity) RETURN n',
'MATCH (n:NaturalPerson) RETURN n',
{}
)
YIELD value
RETURN value.n AS n

返回预期的LegalEntity节点

╒══════════╕
│"n"       │
╞══════════╡
│{"id":123}│
└──────────┘

将参数更改为其他值

:param relType => 'OtherValue'

运行相同的查询,结果不同

╒══════════╕
│"n"       │
╞══════════╡
│{"id":456}│
└──────────┘

相关问题