我對Neo4j的Cypher支架2.0以下查詢:背後的Neo4j的Cypher查詢神奇的結果
MATCH (u:User{uid:'1111111'}), (c1:Concept), (c2:Concept),
c1-[:BY]->u, c2-[:BY]->u, c1-[rel:TO]->c2
WITH c1,c2,rel
MATCH c1-[:AT]->ctx, c2-[:AT]-ctx
WHERE ctx.uid = rel.context
RETURN c1.uid AS source_id, c1.name AS source_name,
c2.uid AS target_id, c2.name AS target_name,
rel.uid AS edge_id,
rel.context AS context_id, ctx.name AS context_name;
它所做的是,它看起來對連接到User
的Concept
標籤(c1
和c2
)的所有節點節點u
,發現他們(c1
到c2
)連接到彼此(rel
),那麼它試圖找到其不同的上下文(ctx
)的概念節點(c1
和c2
)中出現,但只有那些,其uid
比賽關係rel
(rel.context
)的.context
財產uid
,然後返回他們在一個表,其中我們有源id
和name
,目標id
和name
,連接id
,以及這種關係的.context
id
財產以及與該id
的上下文的名稱。
所以一切正常,但問題是:爲什麼?
我的意思是Cypher如何巧妙地匹配ctx.uid
右邊的rel.context
以知道它應該完全插入結果表的正確位置?
有人能解釋我背後的魔力嗎?
還是我完全錯了,只是越來越雜亂的結果?
謝謝!