【问题标题】:neo4j conditional relationshipneo4j 条件关系
【发布时间】:2016-02-29 08:04:11
【问题描述】:

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

  1. 我有两种类型的节点,类型A表示舞台,类型N表示让用户做一些选择。
  2. 首先我们有节点A1,它有几个(2-5)类型N子节点,N1N2强>, N3, ...
  3. 节点 A1 也有子节点 A2A3、...
  4. 在java中,到达A1后,我会要求用户根据Ni做一些选择,然后去一个类型A > 子项基于功能的选择。比如如果N1=true,N2=true,N3=false,我去A2,否则,我转到 A3

顺便说一句,我会在我的程序中多次遇到这种情况。你们知道如何有效地实施它吗?

提前致谢。

【问题讨论】:

  • N2 缺少您的图表;那是从顶部算起的第二个 N 节点还是其他什么?
  • @fge 打错了,应该是N2
  • 是不是只能返回一个节点?如果没有节点或超过 1 个节点是选定 N 个节点的公共子节点怎么办?
  • @fge 是的,只会返回一个节点。我不太明白你的问题。实际上,拓扑不必是我的图。基本上,我想要的是让用户在 A 输入一些值,然后根据输入值转到子 Mi 之一。
  • 好的,我不太了解neo4j,但是如果你使用Set 来收集第一个N 的孩子,那么你可以.removeAll() 来自第二个N 的孩子,等等剩下的应该是你的节点。不过,也许 neo4j 可以更有效地做到这一点。

标签: java graph neo4j


【解决方案1】:

设置建议

(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;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多