如何使用cypher neo4j where子句获取节点的所有关系,而不仅仅是where匹配

如何使用cypher neo4j where子句获取节点的所有关系,而不仅仅是where匹配,neo4j,where,cypher,Neo4j,Where,Cypher,我有一个密码查询: MATCH (p:Person)-->(s:Startup) WHERE p.name =~ '(?i).*something.*' OR p.description =~ '(?i).*something.*' OR s.name =~ '(?i).*something.*' RETURN DISTINCT p, collect(DISTINCT s) 这将返回: +--------+------------+ | p | collect(s) | +--

我有一个密码查询:

MATCH (p:Person)-->(s:Startup)
WHERE p.name =~ '(?i).*something.*' OR p.description =~ '(?i).*something.*' OR s.name =~ '(?i).*something.*'
RETURN DISTINCT p, collect(DISTINCT s)
这将返回:

+--------+------------+
|   p    | collect(s) |
+--------+------------+
|   1    |     1      |
+--------+------------+
在我期待的地方:

+--------+------------+
|   p    | collect(s) |
+--------+------------+
|   1    |     1, 2   |
+--------+------------+
当有人搜索一个名字时,它会返回我所有匹配的人和具有此条件的相关初创公司,但我希望它会返回我所有匹配的人以及两个节点之间的所有关系

(也就是说,如果我搜索一个初创公司名称,我希望结果是有关系的人和初创公司的列表,而不仅仅是人和匹配的初创公司)

我希望我已经很好地解释了这个问题


我的愿望是在一次查询中获得结果。

我认为您正在寻找类似的东西,您首先查询与您的查询相关的任何人,然后使用执行一次
,然后使用该人继续查询:

MATCH (p:Person)-->(s:Startup)
WHERE p.name =~ '(?i).*something.*' OR p.description =~ '(?i).*something.*' OR s.name =~ '(?i).*something.*'
WITH DISTINCT p
MATCH (p)-->(s:Startup)
RETURN DISTINCT p, collect(DISTINCT s)

你能举一个例子说明你在寻找什么样的产出吗?我想搜索一些初创公司或在某些房地产上有“猪肉”的人。结果是一个启动存在,它返回与人员相关的,但仅返回该启动。我需要的是拥有那个人的所有创业公司,如果可能的话,不做任何其他查询。非常感谢,这正是我所寻找的。我是neo4j(当然还有cypher)的新手,所以我不知道如何使用。再次感谢你!