2016-02-29 136 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