我目前正在做一些类似的事情:
MATCH (s:Something) OPTIONAL MATCH (t:Tag)<-[:HAS_TAG]-(s) OPTIONAL MATCH (i:Item)<-[:HAS_ITEM]-(s) OPTIONAL MATCH (w:Whatever)<-[:HAS_WHATEVER]-(s)
字符串当我做一个配置文件,我看到3个可选扩展为每个可选匹配顺序,想知道如果我可以加快它可能做并行?既然彼此独立?
ujv3wf0j1#
在这种情况下我经常这样做
MATCH (s:Something) WITH s, [(s)-[:HAS_TAG]->(t:Tag) | t] AS ts, [(s)-[:HAS_ITEM]->(i:Item) | i] AS is, [(s)-[:HAS_TAG]->(w:Whatever) | w] AS ws
字符串返回数组,而不是null,以防OPTIONAL MATCH不返回任何内容。而且通常也更快。
qkf9rpyu2#
您可以使用单个OPTIONAL MATCH并使用聚合为每种关系类型生成节点列表:
OPTIONAL MATCH
MATCH (s:Something) OPTIONAL MATCH (n)<-[r:HAS_TAG|HAS_ITEM|HAS_WHATEVER]-(s) RETURN s, TYPE(r) AS t, COLLECT(n) AS nodes
字符串
2条答案
按热度按时间ujv3wf0j1#
在这种情况下我经常这样做
字符串
返回数组,而不是null,以防OPTIONAL MATCH不返回任何内容。而且通常也更快。
qkf9rpyu2#
您可以使用单个
OPTIONAL MATCH
并使用聚合为每种关系类型生成节点列表:字符串