![](/img/trans.png)
[英]how to delete node and all related nodes not only the relations — neo4j cypher 1.8
[英]Neo4j cypher getting nodes that are related to another node using ALL relations
我正在执行PoC,以查找图形数据库是否适合我们的需求。
我们进行了一项调查,受访者回答了问题。 我们希望使用一组(主要是两个或三个)问题中的每种可能的答案组合将这些受访者分组。
我有以下节点和关系
(:Question)-[:HasAnswer]->(:Answer)
(:Respondent)-[:Answered]->(:Answer)
(:Answer)-[:BelongsTo]->(:WeightingGroup)
其中:
我的目标是收到这样的结果:
/----------------------------------------------\
| Q1 | Q2 | n |
|--------------------+-------------------------|
| Answer1 | Answer1 | 23 |
| Answer1 | Answer2 | 12 |
| Answer1 | Answer3 | 54 |
| Answer2 | Answer1 | 65 |
| Answer2 | Answer1 | 5 |
| Answer2 | Answer1 | 15 |
\--------------------+--------------------+----/
要么:
/-------------------------\
| Q1, Q2 | n |
|--------------------+----|
| Answer1, Answer2 | 23 |
| Answer1, Answer2 | 12 |
| Answer1, Answer3 | 54 |
| Answer2, Answer1 | 65 |
| Answer2, Answer1 | 5 |
| Answer2, Answer1 | 15 |
\--------------------+----/
其中,n是给出两个答案的受访者人数。
但是,当我运行此查询时:
// Aantal antwoorden per wegingsgroep
match (w:WeightingGroup)-[]->(a:Answer)<-[:Answered]-(r:Respondent)
with w, collect(distinct a.Text) as answers, count(distinct r) as n
return answers, w.Weight, n
看来返回的n =回答了answer1或answer2的受访者人数。
如何获得给出答案1和答案2的受访者人数?
提前致谢!
这样的事情怎么样:每个组收集答案,每个被访者收集答案,过滤所有被访者的答案在组的答案中的位置。 我认为,那么依靠受访者就可以了(由于已经收集了答案,因此您必须提取答案文本。)
MATCH (g:WeightingGroup)<-[:BelongsTo]-(a)
WITH g, collect(a) as apg
MATCH (r:Respondent)-[:Answered]->(a)
WITH g, apg, r, collect(a) as apr
WHERE ALL(a IN apr WHERE a IN apg)
RETURN g.Weight, EXTRACT(a IN apg | a.Text), count(r) as n
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.