neo4j条件关系

时间:2016-02-29 08:04:12

标签: java graph neo4j

我目前正在使用图形db-neo4j开发一个程序,我需要实现以下功能。

enter image description here

  1. 我有两种类型的节点,类型 A 表示阶段,类型 N 表示让用户做一些选择。
  2. 首先我们有节点 A1 ,它有几个(2-5)类型 N 子节目, N1 N2 N3 ,...
  3. 节点 A1 还有子节点 A2 A3 ,...
  4. 在java中,在到达 A1 之后,我会要求用户根据 Ni 进行一些选择,然后转到 A 基于选择功能的孩子。例如,如果 N1 = true, N2 = true, N3 = false,我会转到 A2 ,否则,我转到 A3
  5. 顺便说一下,我会在我的节目中多次遇到这种情况。你们有没有想过如何有效地实现它。

    提前致谢。

2 个答案:

答案 0 :(得分:2)

建议

的建议
(Ax)-[:TRUE ]->(Nx)-[:TRUE ]->(Ax+1)
(Ax)-[:FALSE]->(Nx)-[:FALSE]->(Ax+1)

查询建议

 MATCH (a:A {id:1}),
       (a)-[:TRUE]-> (n)-[:FALSE]->(a2),
       (a)-[:FALSE]->(n2)-[:TRUE]->(a2),
       (a)-[:TRUE]-> (n)-[:FALSE]->(a2)
 RETURN a2;

答案 1 :(得分:1)

感谢@Michael Hunger,我认为我找到了一个可以接受的解决方案,尽管这似乎还有很多工作要做。

具体来说,我将 A1 的所有路径扩展为 Ni ,并将所有 Ni = true的唯一路径链接到 A2 * 以及 A3 的所有其他路径,如下图所示:

enter image description here