基于前置行结果的Cypher查询:样本层级结构构建需求
没问题,我帮你把这个测试与样本的层级结构数据整理成规范的Markdown格式,方便你在Neo4j里使用:
构建测试与样本的层级结构数据
需求场景说明
我们需要创建4个独立测试(w、x、y、z),每个测试基于不同样本开展,最终形成测试→样本的层级关联结构。对应的预期结果集如下:
row1: w, [13,5,16,21,11,19] row2: x, [5,16,19] row3: y, [5,19] row4: z, [19]
完整Cypher创建语句
以下是可以直接执行的Cypher语句,包含测试节点、样本节点的创建,以及两者之间的关联关系建立:
// 创建4个测试节点 CREATE (a:test{name:'w'}) CREATE (b:test{name:'x'}) CREATE (c:test{name:'y'}) CREATE (d:test{name:'z'}) // 创建所有涉及的样本节点 CREATE (e:sample{number:13}) CREATE (f:sample{number:5}) CREATE (g:sample{number:16}) CREATE (h:sample{number:21}) CREATE (i:sample{number:11}) CREATE (j:sample{number:19}) // 建立测试到样本的层级关联关系 // 使用MERGE避免重复创建相同关联,若确认无重复可替换为CREATE MERGE (a)-[:HAS_SAMPLE]->(e) MERGE (a)-[:HAS_SAMPLE]->(f) MERGE (a)-[:HAS_SAMPLE]->(g) MERGE (a)-[:HAS_SAMPLE]->(h) MERGE (a)-[:HAS_SAMPLE]->(i) MERGE (a)-[:HAS_SAMPLE]->(j) MERGE (b)-[:HAS_SAMPLE]->(f) MERGE (b)-[:HAS_SAMPLE]->(g) MERGE (b)-[:HAS_SAMPLE]->(j) MERGE (c)-[:HAS_SAMPLE]->(f) MERGE (c)-[:HAS_SAMPLE]->(j) MERGE (d)-[:HAS_SAMPLE]->(j)
小提示
- 语句中的
MERGE关键字用于确保不会重复创建相同的测试-样本关联;如果是首次创建数据,也可以换成CREATE,执行效率会略高一点。 - 执行完成后,你可以通过类似
MATCH (t:test)-[:HAS_SAMPLE]->(s:sample) RETURN t.name, collect(s.number)的语句验证结果是否符合预期。
内容的提问来源于stack exchange,提问作者David A Stumpf
相关产品推荐
相关产品推荐

