Cypher:在节点属性数组

时间:2017-12-10 19:47:47

标签: neo4j cypher

我想在关系的属性数组中找到所有值及其出现次数。

我有三个节点,每个节点都有一个关系属性,它是一个字符串数组。

1- [“444”],2- [“222”,“111”]和3- [“444”]

我尝试的是:

MATCH (:Person { field: "B" })-[r:ALIKE]->(person)
RETURN r.at, COUNT(r.at)

目前的结果:

r.at            COUNT(r.at)
["222", "111"]  1
["444"]         2

我的期望:

r.at            COUNT(r.at)
["222"]         1
["444"]         2
["111"]         1

r.at            COUNT(r.at)
"222"           1
"444"           2
"111"           1
如果我得到值而不是数组,那么

会更好。

如果还有一个关系“111”和“222”,它应该是这样的:

r.at            COUNT(r.at)
"222"           2
"444"           2
"111"           2

我应该如何更改当前查询? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

让我们重新创建测试数据集:

CREATE
  (:Person {id: 1, at: ['444']}),
  (:Person {id: 2, at: ['222', '111']}),
  (:Person {id: 3, at: ['444']})

要计算单个字符串,UNWIND每个列表并计算其元素的人员节点数(p):

MATCH (p:Person)
UNWIND p.at AS at
RETURN at, count(p)

结果是:

╒═════╤══════════╕
│"at" │"count(p)"│
╞═════╪══════════╡
│"111"│1         │
├─────┼──────────┤
│"444"│2         │
├─────┼──────────┤
│"222"│1         │
└─────┴──────────┘
相关问题