簡體   English   中英

在Neo4j中找到有向邊的路徑

[英]Find path in Neo4j with directed edges

這是我第一次嘗試Neo4j,如果我缺少一些瑣碎的東西,請原諒。 這是我的問題:


考慮在以下Neo4j控制台示例中創建的圖形: http ://console.neo4j.org/?id=y13kbv

在此示例中,我們具有以下節點:

(人員{memberId,memberName,membershipDate})

(通過電子郵件發送{value,badFlag})

(AccountNumber {value,badFlag})

我們可能有更多的節點捕獲與Person相關的功能,例如creditCard,billAddress,shipAddress等。所有這些節點都將與Email和AccountNumber節點相同: (creditCard {value,badFlag}),(billAddress {value,badFlag} }),等等。

如在Neo4j控制台示例中所示,填充了圖,並假設我們向圖添加了另一個Person,如下所示:

(p7:Person {memberId:'18' , memberName:'John', membershipDate:'12/2/2015'}),
(email6:Email {value: 'john@gmail.com', badFlag:'false'}),
(a2)-[b13:BELONGS_TO]->(p7),
(email6)-[b14:BELONGS_TO]->(p7)

當我們將此新人員添加到系統時,用例是我們必須檢查是否存在從新人員(“ email6”和“ a2”節點)的功能到系統中“ badFlag = true”,在這種情況下為節點(a1 {value:1234,badFlag:true})。

在這里,結果路徑為(email6)-[BELONGS_TO]->(p7)<-[BELONGS_TO]-(a2)-[BELONGS_TO]->(p6)<-[BELONGS_TO]-(email5)-[BELONGS_TO]->(p5)<-[BELONGS_TO]-(a1:{badFlag:true})

我嘗試過這樣的事情:

MATCH (newEmail:Email{value:'john@gmail.com'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature{badFlag:'true'}) RETURN badPerson, badFeature;

當只有一個級別的鏈接時,它似乎起作用,但是當路徑可能更長時(如Neo4j控制台示例),它不起作用。

我需要有關Cypher查詢的幫助,這將幫助我解決此問題。 我最終將使用我的應用程序使用Neo4j的Java API進行此操作。 使用Java API進行此操作的正確方法是什么?

您在查詢中輸入錯誤。 PART_OF應該是BELONGS_TO 這應該為您工作:

MATCH (newEmail:Email {value:'john@gmail.com'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature {badFlag:'true'})
RETURN badPerson, badFeature;

另外:您似乎對所有屬性都使用字符串值。 我將字符串值true和false替換為布爾值truefalse 同樣,始終為數字的值應僅使用整數或浮點值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM