2014-04-04 61 views
0

我有一個ID爲1的節點和數據庫中的ID爲2的節點,它們相互鏈接。爲什麼當我運行此查詢返回Cypher - WHERE和AND與2 ID

MATCH (a)-[r]-(b) WHERE id(a)=1 AND id(b)=2 RETURN *; 

什麼都沒有?

解決方案

我用GrapheneDB。通常,GrapheneDB會在節點圖形上顯示系統節點標識,但是如果您有屬性id,則會顯示該屬性。當我運行查詢時,我使用的圖形ID實際上不是系統ID,所以id(a)沒有給出預期的結果。

回答

1

由於對每個候選結果評估WHERE子句,並且整個子句必須評估爲true。

另外,將MATCH (a)-[r]-(b)只能找到這兩個節點相關的圖的部分。

如果你只是想找到節點1和2,你可以這樣做:

MATCH n 
WHERE id(n) = 1 OR id(n) = 2 
RETURN n 

但是,你應該是使用節點ID。它們已被棄用,並被逐漸淘汰。還有很多其他方法可以找到並識別不依賴其內部標識符的節點。如果你用你的實際場景開一個新的問題,我們可以幫你寫一個更好的查詢。

+0

我在這裏創建了一個新問題 - http://stackoverflow.com/questions/22853311/cypher-get-relationships-with-start-node-id-end-node-id-and-type – zode64

+0

順便說一句在我的數據庫中,這兩個ID是鏈接的,我應該在尋找他們相關的地方。那麼爲什麼沒有被評估爲真?感謝有關ID的棄用信息,這很有用 – zode64