我有这个密码查询:
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 |
+--------+------------+
当有人搜索某个名称时,它会以符合此条件的方式返回所有匹配的人员和相关的初创公司,但我希望它能让所有匹配的人员返回给我,并始终返回两个节点之间的所有关系。
(即,如果我搜索一个创业公司名称,我希望结果是关系中的人员和创业公司的名单,而不仅仅是人和匹配的创业公司)
我希望我已经很好地解释了这个问题。
我希望在一次查询中得到结果。
答案 0 :(得分:3)
我认为您正在寻找类似这样的内容,您可以在第一个查询中找到与您的查询相关的任何人,然后执行WITH
并继续使用该人查询:
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)