2013-05-19 88 views
0

給定一個圖,其中一個關係上的屬性是一個節點的關鍵,如何返回關係屬性引用的節點?Cypher - 從引用屬性引用節點

所以,考慮到圖:

Node(user1 { type: "user", uid: "u1", name: "test user" }) 
Node(user2 { type: "user", uid: "u2", name: "test user 2}) 
Node(cat1 { type: "category", cid: "c1", name: "Nice person"}) 

Rel((user1)-[:SAYS { cid: "c1" }]->(user2)) 

我如何與用戶2節點給用戶1一起返回CAT1節點?

(例如,返回值將包括cat1以及user1和user2的定義)。

的邏輯起點是:

START user1 = node:auto_node_index(uid = "u1") 
MATCH (user1)-[cat:SAYS]->(user2) 
RETURN user1, cat, user2; 

但我無言以對哪裏何去何從。

如果這變得太複雜了,我總是可以將類別的屬性放入關係中(很明顯),但是這往往會促使我使用輔助存儲介質歸類類別定義(因爲它們將是孤立的節點在圖中)。

謝謝! r /史蒂夫

回答

0

嗯。其實很簡單。輸入這個問題讓我更清楚地思考這個問題。這工作:

START user1 = node:node_auto_index(uid = "u1"), c = node:node_auto_index(type = "category") 
MATCH (user1)<-[cat:SAYS]-(user2) 
WHERE c.cid = cred.cid 
RETURN user1, cat, user2, c; 
+0

我想你會得到一個'未知的標識符:cred' - 你的意思是'cat'?我對你爲什麼以這種方式進行建模有點困惑。謹慎地闡述你的用例? –

+0

是的,這是一個錯字。玩轉LinkedIn的認可實施。所以user1支持user2。 –