neo4j - Neo4J:为参数列表中的每个匹配项返回一个随机节点
问题描述
我正在尝试创建一个将返回节点列表的 Cypher 查询,其中列表中的每个项目都是 MATCH 查询中的随机节点。
例如,我有一个“驻留在”(基因座)的(基因)列表。我想为每个基因座位置 [0, 1, 2, 3...] 获取一个随机基因节点并将其作为列表返回。
我一直在尝试使用这个查询,但它只返回一个基因结果,而不是基因列表:
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)
解决方案
由于限制切断了整个流,因此使用集合:
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
推荐阅读
- python-3.x - 无法 pip 安装 lxml
- reactjs - 多边形未出现在 react-google-maps 中
- node.js - 变量无法进入角度 5 剩余的视图 html 已满
- erlang - Erlang integers in list and use them in formula's
- ios - 如何将我的 SDK 框架项目的 .dsym 文件包含到 App 项目中?
- unity3d - Admob 测试 广告出现在模拟器上但不是真手机?
- angular - Angular 6关于多个模块的警告,其名称仅在大小写上有所不同
- java - Python:指定相同的通用参数类型
- python - Scikit-Image 问题(特别是:`blob_log`)
- mysql - 将第二个表添加到查询时忽略 MySQL 日期范围索引