2013-05-19 59 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。 –