簡體   English   中英

Neo4j cypher如何在APOC neo4j cypher查詢中包含父對象的另一個關系節點

[英]Neo4j Cypher how to include another relationship node of parent in APOC neo4j cypher query

讓我們考慮

  • 無人機(父母)
    • 直升機(兒童)
      • 像素(大孩子)

以[:SUB_CATEGORY]作為關系節點 在此處輸入圖片說明

在Cypher查詢下面,以獲取帶有每個節點標記的部分

MATCH p=(n:Category)-[:SUB_CATEGORY*]->(m)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
RETURN ps

上面的密碼查詢返回實際結果集,即它顯示了SUB_CATEGORY和TAGGED_TO的所有關系

在此處輸入圖片說明

現在,如果我以前使用APOC程序將其轉換為Tree結構,那么它將跳過父節點的TAGGED_TO關系節點,即Drone

MATCH p=(n:Category)-[:SUB_CATEGORY*]->(m)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) YIELD value
RETURN value

您能給我建議使用APOC獲取所有節點的TAGGED_TO節點以及父節點嗎

在第一個查詢中,由於啟用了瀏覽器選項“ Connect result nodes顯示了父節點Drone:Part節點之間的TAGGED_TO關系:

如果選中此選項,則在檢索密碼查詢結果之后,將執行第二個查詢以獲取結果節點之間的關系。

但是實際上結果中沒有這種關系,因為匹配模式未考慮路徑具有長零的可能性。 嘗試這個:

MATCH p=(n:Category)-[:SUB_CATEGORY*0..]->(m:Category)<-[:TAGGED_TO]-(part:Part)
WHERE NOT ()-[:SUB_CATEGORY]->(n) AND toLower(part.name) STARTS WITH toLower('atm')
WITH COLLECT(p) AS ps
CALL apoc.convert.toTree(ps) YIELD value
RETURN value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM