[英]How can i get multiple lists as an output when i pass multiple ID's in Neo4j Cypher query?
我当前的密码查询如下
MATCH (p:xyz)-[:children *]->(c:xyz)
WHERE p.Code=100
WITH COLLECT (c) + p AS all
UNWIND all as p MATCH (p)-[:children]->(c)
RETURN collect(DISTINCT c.Code) as Children_Nodes
这给了我一个输出
"Children_Nodes" │
╞══════════════════════════════════════════════════════════════════════╡
│[101,102,103,104,105]│
如果我传递两个不同的 id 就像
MATCH (p:xyz)-[:children *]->(c:xyz)
WHERE p.Code IN [100,200]
WITH COLLECT (c) + p AS all
UNWIND all as p MATCH (p)-[:children]->(c)
RETURN collect(DISTINCT c.Code) as Children_Nodes
这将返回类似
"Children_Nodes" │
╞══════════════════════════════════════════════════════════════════════╡
│[101,102,103,104,105,201,202,203,204,205]│
但我真正需要的是两个不同的单独列表,而不是像上面那样的一个整理列表
"Children_Nodes" │
╞══════════════════════════════════════════════════════════════════════╡
│[101,102,103,104,105] [201,202,203,204,205]│
那这个呢?
MATCH (p:xyz)-[:children *]->(c:xyz)
WHERE p.Code IN [100,200]
WITH p, COLLECT (DISTINCT c.Code) AS children
RETURN COLLECT(children) AS Children_Nodes
这应该为每个p.Code
返回一行,以及其后代的代码列表:
MATCH (p:xyz)-[:children*]->(c:xyz)
WHERE p.Code IN [100, 200]
RETURN p.Code AS pCode, COLLECT(DISTINCT c.Code) AS descendantCodes
我已经找到了我的问题的答案。 如果有人需要,他们可以参考以下答案。 我调整了给定的查询。 如果他们对我的问题有更好的解决方案,请回复。
MATCH path = (p:xyz)-[:children *]->(c:xyz) WHERE p.Code IN [100, 200]
WITH
COLLECT(path) as paths, COLLECT (c) + p AS all UNWIND all as p
MATCH (p)-[:children]->(c) CALL apoc.convert.toTree(paths,true, {nodes: {xyz:
['Code','Name']}}) yield value as hierarchy RETURN hierarchy,collect(distinct c.Code)
as code_list
但是当我不使用
CALL apoc.convert.toTree(paths,true, {nodes: {xyz:
['Code','Name']}}) yield value as hierarchy
而只是
MATCH path = (p:xyz)-[:children *]->(c:xyz)WHERE p.Code IN
[100,200] WITH COLLECT(path) as paths, COLLECT (c) + p AS all UNWIND all as p
MATCH (p)-[:children]->(c) CALL apoc.convert.toTree(paths,true, {nodes:
{xyz: ['Code','Name']}}) yield value as hierarchy RETURN
hierarchy,collect(distinct c.Code) as code_list
我再次得到的输出是一个整理过的列表,而不是一个隔离的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.