我使用neo4j爲我的項目之一,有一個節點只有一個屬性爲name
,我想要使用ID獲取該節點,它已經有一個ID,但是當我使用此代碼Neo4J通過ID獲取節點
MATCH (s:SKILLS{ID:65110}) return s
它沒有返回,我的繼承人節點
如果查詢是錯誤的,那麼我怎麼查詢它使用數字
我使用neo4j爲我的項目之一,有一個節點只有一個屬性爲name
,我想要使用ID獲取該節點,它已經有一個ID,但是當我使用此代碼Neo4J通過ID獲取節點
MATCH (s:SKILLS{ID:65110}) return s
它沒有返回,我的繼承人節點
如果查詢是錯誤的,那麼我怎麼查詢它使用數字
MATCH (s)
WHERE ID(s) = 65110
RETURN s
ID
function得到你的節點或關係的id。這與您創建的名爲id
或ID
的任何屬性都不同。
你可以說:
(n:User) where id(n) >=20 RETURN n
這將返回一個類型用戶的所有節點與節點參考ID超過20
警告:以下答案不正確! START should only be used when accessing legacy indexes。這是disabled in Cypher 2.2 and up。
的Neo4j recommends using
WHERE ID(n) =
,並進一步指出,它will only require a single lookup (does not scan every node to find the matching ID)保持這個答案,防止別人犯同樣的錯誤。
您可以使用WHERE ID(s) = 65110
,但這會檢查每個節點的ID在你的數據庫。
有一種更有效的方式來做到這一點:
START s=NODE(517) MATCH(s) RETURN s
有什麼不同的方式來得到這樣的數據(S:SomeLabel {ID:65110})? – DonkeyKong
@DonkeyKong不,因爲你也可以添加id屬性,這是id以外的東西。一個id屬性可以有任何類型,而node或edge id是一個無符號整數,鏈接到Neo4J內部結構中的一個位置。 – pvoosten
標準免責聲明:不要將內部Neo4j ID用於長期實體標識。出於性能的考慮,未來的Neo4j版本可能會將這些ID轉移。創建您自己的唯一ID屬性(理想情況下用'CONSTRAINT')來跟蹤實體 –