我正在尝试创建一个单一的Cypher查询,该查询将返回节点列表,其中列表中的每个项目都是MATCH查询中的随机节点。
例如,我有一个“基因”列表,这些列表“驻留”在(基因座)上。 我想为每个基因座位置[0、1、2、3 ...]获得一个随机的Gene节点,并将其作为列表返回。
我一直在尝试使用此查询,但是它只返回一个Gene结果,而不是Gene列表:
WITH [0,1,2] AS locus
UNWIND locus as lp
MATCH (g:Gene)-[:resides]-(:Locus{position:lp, chromosome_pair: 0})
WITH lp, g, rand() as r ORDER BY r LIMIT 1
WITH COLLECT(g) as gw, lp
return lp, gw
我在收集UNWIND(最后一行的第二行)中每个循环的结果时遇到问题,它只返回一个结果,而不是3(因为我要求轨迹位置0、1和2)
答案 0 :(得分:1)
由于限制切断了整个流,请使用集合:
WITH [0,1,2] AS locus
UNWIND locus AS lp
MATCH (g:Gene)-[:resides]-(:Locus{position:lp, chromosome_pair: 0})
WITH lp,
g ORDER BY rand()
WITH lp,
collect(g)[0..1] AS g // take the first item in the collection
WITH collect(g) AS gw,
lp
RETURN lp,
gw