Neo4j 查找具有或不具有进一步关系的节点

Neo4j 查找具有或不具有进一步关系的节点,neo4j,cypher,Neo4j,Cypher,假设一个节点(t)可以与另一个节点(q)有关系,但这不一定是给定的。无论我查找的是(t)或(q)属性,都需要进行一个查询,以查找在这两种情况下具有特定属性的所有节点(t)。当(t)和(q)之间存在关系时,或者当(t)只有一个查询参数而没有关系时,这一点应起作用 我试图用一个可选的匹配来解决这个问题,但我想不出来: MATCH (q) -- (t) where q.property1 = 1 OR q.property2 = 2 // in case a search parameter for

假设一个节点(t)可以与另一个节点(q)有关系,但这不一定是给定的。无论我查找的是(t)或(q)属性,都需要进行一个查询,以查找在这两种情况下具有特定属性的所有节点(t)。当(t)和(q)之间存在关系时,或者当(t)只有一个查询参数而没有关系时,这一点应起作用

我试图用一个可选的匹配来解决这个问题,但我想不出来:

MATCH (q) -- (t)
where q.property1 = 1 OR q.property2 = 2 // in case a search parameter for q has been given
OPTIONAL MATCH (t)
where t.property1 = 3 // in case the search looks for a node (t)
RETURN t 
在正确的设置中,当我查找相关节点的属性(q)或直接属性(t)时,应该返回(t)

如何更改查询以使其工作?
感谢您的支持

为什么需要一个单独的密码查询?你不能对每个用例有一个不同的查询吗?apoc已经在cypher中实现了一个if-else语句。查看文档Hi Sam,我正在尝试为这个任务实现一个单字段搜索,所以我们的想法是使用一个查询来获取所有信息,并通过可能有相关数据的节点运行。我当然可以拆分并尝试触发两个语句并合并结果——我只是希望我只能有一个查询。