2016-09-21 91 views
-2

我有這樣的關係:
(U:用戶) - [R:標記{標籤識別,時間戳}] - >(P:播放器{名稱= '湯姆'})Neo4j的使用關係找到相關的屬性

User1 tagged player Tom,the tagID is 1 and the tagName is good 
User2 tagged player Tom,the tagID is 2 and the tagName is bad 

和節點等:
(T:標籤{TAGID,的tagName})

tagID tagName 
1  Good 
2  Bad 

節點 '標籤' 和關係都使用相同的TAGID標記,我怎樣才能找到所有的標記名,例如基於特定的玩​​家名稱,如湯姆,好,壞等?我嘗試類似如下:

match (:User)-[r:tagged]->(P:Player{Name:'Tom'}),(t:tag) 
where t.tagID=r.tagID 
return t.tagName 
order by tagName desc 
limit 20 

我得到語法錯誤。
我的期望是

tagName 
Good 
Bad 
+0

仍不十分清楚。你在描述中談論用戶,但他們不是你的問題的一部分。此外,你有什麼嘗試,你取得了什麼,而不是你所期望的? – peinearydevelopment

回答

0

編輯後,您的查詢看起來幾乎正確,只需要一些小的調整。

您應該添加您的語法錯誤,但我想這是因爲您試圖對「tagName」進行排序,它不是範圍內的變量或列(「t.tagName」在範圍內,您可能想要別名)

您還需要確保您在某處使用了不同的標記,無論是在匹配標記之後的標記ID上,因爲多個人有可能使用相同的標籤。

試試這個:

match (:User)-[r:tagged]->(:Player{Name:'Tom'}) 
with distinct r.tagID as tagID 
match (t:tag) 
where t.tagID = tagID 
return t.tagName AS tagName 
order by tagName desc 
limit 20 
0

這是很難回答你的問題沒有更多的信息。 1.在你的關係描述中沒有property3。 2.你沒有包含關於你的對象或他們的關係的真實信息。

我的猜測,雖然是你想要的東西是這樣的: match(b {property0:'VALUE0'}) match(b)<-[r:{property1:'VALUE1', property2:'VALUE2'}]-(a) return a

這基本上說,創建一個變量b,併爲其分配的分貝有property0與價值相等的值對象。然後創建另一個變量a併爲其分配與b有關係的值,其中關係的property1等於VALUE1,而property2的值等於VALUE2。 如果這不是您正在尋找的內容,請提供更多關於您想要完成的事情以及您收到哪些錯誤的詳細信息。

+0

更多細節已添加,對於上一個問題感到抱歉。 – toblKr