簡體   English   中英

Cypher 查詢:如果它們與特定屬性共享關系,則匹配所有節點對

[英]Cypher query: match all the couples of nodes iff they share a relationship with a specific property

我構建了一個非常簡單的圖,它具有不同類型的節點和一種關系,名為MAPPING1TO1 然后,每對節點共享相同類型的關系。 MAPPING1TO1只有一個屬性,名為EventoTag 此屬性是一個字符串數組,格式如下: (n,m) ,其中n是三位或兩位整數,而m是兩位整數。 因此,例如,給定一個泛型關系r ,它的屬性EventoTag可能看起來像: (001,11), (002,12), (003,13), ...

我將在 Cypher 中編寫一個查詢,該查詢返回共享滿足以下條件的關系的所有節點對:給定輸入中的字符串x ,數組屬性EventoTag中存在一個字符串,其中包含x作為子字符串。

我嘗試使用以下查詢解決此問題:

WITH "912" AS event 
MATCH p=(a)-[r]->(b)
WHERE ALL(item in r.EventoTag WHERE SUBSTRING(item,0,4) CONTAINS event)
RETURN p

查詢“有效”,但需要太多。 我有不正確的關系,即不滿足上述條件。 舉個例子,看看下面的結果圖像:

在此處輸入圖片說明

選擇的關系是錯誤的,而其他關系是正確的。 是錯誤的,因為它不滿足條件(它的EventoTag屬性不包含子字符串“912”),但仍然在最終結果中被采用,我不明白為什么。

你能幫助我嗎? 謝謝你。

這可能是由於 Neo4j 瀏覽器的特性,它獲取查詢返回的所有節點,並查找並填充它們之間存在的所有關系(無論您是否返回這些關系)。

從瀏覽器設置(左下角的齒輪圖標)中,滾動到底部並取消選中“連接結果節點”。 如果您重新運行查詢,很可能不會返回關系。

暫無
暫無

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

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