簡體   English   中英

如何使用Cypher獲得兩個節點之間相同關系的數量

[英]How do i get number of same relationships between two nodes with Cypher

在此處輸入圖片說明

現在,我需要查詢返回具有關聯躍點數的Borko的祖先節點。

  • Cupko ... 1
  • 米爾科... 2
  • 一月... 3

問題的第二部分:如果我們包含母親關系,查詢會是什么樣? 結果應該是這樣的:

  • Cupko ...爸爸... 1
  • SomeFemale ...媽媽... 1
  • 米爾科...爸爸... 2
  • SomeFemale2 ...媽媽... 2

我使用以下代碼片段重新創建了數據集:

CREATE
   (:Person {name: 'Jan'})-[:Father]->
   (:Person {name: 'Mirko'})-[:Father]->
   (:Person {name: 'Cupko'})-[:Father]->
   (:Person {name: 'Borko'})

您應該保存路徑並使用路徑的長度來獲取躍點數:

MATCH p=(b:Person {name: 'Borko'})<-[:Father*]-(n)
RETURN n, length(p)

返回:

╒════════════════╤═══════════╕
│"n"             │"length(p)"│
╞════════════════╪═══════════╡
│{"name":"Cupko"}│1          │
├────────────────┼───────────┤
│{"name":"Mirko"}│2          │
├────────────────┼───────────┤
│{"name":"Jan"}  │3          │
└────────────────┴───────────┘

對於第二部分,可以使用relationships函數:

MATCH p=(b:Person {name: 'Borko'})<-[:Father|Mother*]-(n)
WITH p, relationships(p) AS rels, n
RETURN n, length(p) AS hops, type(rels[length(rels)-1]) AS type

返回:

╒════════════════╤══════╤════════╕
│"n"             │"hops"│"type"  │
╞════════════════╪══════╪════════╡
│{"name":"Cupko"}│1     │"Father"│
├────────────────┼──────┼────────┤
│{"name":"Mirko"}│2     │"Father"│
├────────────────┼──────┼────────┤
│{"name":"Jan"}  │3     │"Father"│
└────────────────┴──────┴────────┘

當然,您可以使用大小寫表達式將關系的名稱轉換為適當的類型,例如CASE type(rels[length(rels)-1]) WHEN 'Father' THEN 'Dad' WHEN 'Mother' THEN 'Mom' END AS role

暫無
暫無

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

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