2016-02-29 120 views
2

我目前正在使用graph db-neo4j来编写一个程序,我需要实现以下功能。neo4j条件关系

enter image description here

  1. 我有两种类型的节点,类型指阶段,类型Ñ装置让用户做一些选择。
  2. 首先,我们有节点A1,其中有几个(2-5)型ñ孩子,N1N2N3,...
  3. 节点A1也有孩子节点A2A3,...
  4. 在java中,在A1到站后,我会要求用户做一些选择ACCO rding到Ni,然后根据选择的功能转到类型A孩子。例如,如果N1 = TRUE,N2 = TRUE,N3 =假,我去A2,否则,我转到A3

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

在此先感谢。

+0

你的图中缺少'N2';是从顶部还是其他的第二个N节点? – fge

+0

@fge这是一个错字,应该是** N2 **。 –

+0

这是否意味着只有一个节点可以返回?如果没有节点(或多于1个)是所选N个节点的常见子节点? – fge

回答

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

感谢@迈克尔饥饿,我想我找到一个可接受的解决方案,但它似乎有很多工作要做。

具体而言,我展开所有pathes从A1通过和链接的唯一路径时所有 = true来A2 *和所有其他路径A3如下面的图:

enter image description here