2015-05-17 88 views
0

我跑了暗號查詢,給了我一些結果暗號不返回行與多個組合匹配聲明

Cypher支架1:

neo4j-sh (?)$ MATCH (a: Answer { id: "answerID" })<-[:CHOSE]-(u: User) 
> RETURN count(u);                  
+----------+ 
| count(u) | 
+----------+ 
| 1  | 
+----------+ 
1 row 
19 ms 

Cypher支架2:

neo4j-sh (?)$ MATCH (q: Question)-[:ANSWER]->(a: Answer { id: "answerID" }) 
> RETURN count(q); 
+----------+ 
| count(q) | 
+----------+ 
| 1  | 
+----------+ 
1 row 
14 ms 

但是把兩者結合起來條件給我零結果

neo4j-sh (?)$ MATCH (q: Question)-[:ANSWER]->(a: Answer { id: "answerID" })<-[:CHOSE]-(u: User) 
> RETURN count(u); 
+----------+ 
| count(u) | 
+----------+ 
| 0  | 
+----------+ 
1 row 
31 ms 

這個查詢有什麼問題嗎?幫幫我!

+0

這真的很奇怪......當我創建一些示例數據並將您的查詢複製/粘貼到我的控制檯時,我爲它們獲取了'1'。你使用的是什麼版本的Neo4j? –

+0

這是neo4j-enterprise-2.1.6。是的,它看起來很奇怪,我無法弄清楚什麼是錯的 – surenyonjan

+0

奇特 - 如果你用這種方式把它們結合起來怎麼辦?MATCH(q:Question) - [:ANSWER] - >(a:Answer {id:「answerID」})匹配一個< - [:CHOSE] - (u:User)return count(u)'?如果你轉儲你的數據它看起來像什麼? –

回答

1

是否有可能您有不同的答案節點id =「answerId」?檢查使用:

MATCH (a:Answer{id:'answerID'}) return count(a) 

如果這給出了一個結果> 1它將證明我的理論。在這種情況下,其中一個將連接到Question,另一個可能連接到User

重複的節點可能發生,例如,您在LOAD CSV中使用非粒度MERGE

+0

是的,有不同的節點id =「answerId」。 你是對的Stefan – surenyonjan

+0

你可以在'answerId'上使用[unique constraints](http://neo4j.com/docs/stable/query-constraints.html#constraints-create-uniqueness-constraint)來確保沒有重複 – zaboco