neo4j - 忽略 Cypher 查询或替代方案中的属性:如何计算关系序列
问题描述
以下 Cypher 语句为我提供了代码下方的图形输出(见图)。以及图像下方的文本输出。我的问题是文本输出。
我将尝试清楚地解释这个问题:我对两个节点的相同序列感兴趣,关于一个特定的属性(这里:personName)。例如,正如您在图片中看到的(或从 create 语句中看到的),Bob 在 May 之后出现了两次。我想通过 apoc.coll.frequencies(pairsOfActs) AS giveBackFrequencyOfPairs RETURN giveBackFrequencyOfPairs 来捕捉这个。但是,“时间”属性阻碍了。有没有办法忽略时间属性?我一直在尝试对列表进行操作以及删除时间属性(然后我的序列消失了),但没有任何效果。有什么建议么?或者这种方法完全错误,或者甚至有一个预定义的函数来计算我缺少的特定节点序列?
CREATE
(a: Action {personName: 'Tom', time: 1}),
(b: Action {personName: 'May', time: 2}),
(c: Action {personName: 'Bob', time: 3}),
(d: Action {personName: 'Alex', time: 4}),
(e: Action {personName: 'Zac', time: 5}),
(f: Action {personName: 'Jill', time: 6}),
(g: Action {personName: 'May', time: 7}),
(h: Action {personName: 'Bob', time: 8})
MATCH (act: Action)
WITH act ORDER BY act.time ASC
WITH COLLECT(act) AS acts
FOREACH (n IN RANGE(0, size(acts)-2) |
FOREACH (curr IN [acts[n]] |
FOREACH (next IN [acts[n+1]] |
MERGE (curr)-[:NEXT]-> (next))))
WITH apoc.coll.pairsMin(acts) as pairsOfActs
UNWIND pairsOfActs as unwoundPairsOfActs
WITH apoc.coll.frequencies(unwoundPairsOfActs) AS giveBackFrequencyOfPairs
RETURN giveBackFrequencyOfPairs
解决方案
对于您陈述的问题,无需创建NEXT
关系,因此此答案无需费心创建它们。如果出于某种原因确实需要,您可以修改此答案以将其重新添加。
此查询应返回每对名称(出现在您的time
序列中)的频率:
MATCH (act: Action)
WITH act ORDER BY act.time ASC
RETURN apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(act.personName))) AS giveBackFrequencyOfPairs
带有您的样本数据的输出将是:
╒══════════════════════════════════════════════════════════════════════╕
│"giveBackFrequencyOfPairs" │
╞══════════════════════════════════════════════════════════════════════╡
│[{"count":1,"item":["Tom","May"]},{"count":2,"item":["May","Bob"]},{"c│
│ount":1,"item":["Bob","Alex"]},{"count":1,"item":["Alex","Zac"]},{"cou│
│nt":1,"item":["Zac","Jill"]},{"count":1,"item":["Jill","May"]}] │
└──────────────────────────────────────────────────────────────────────┘
推荐阅读
- javascript - 有没有办法使用 Expo 获取设备的 IP 地址?
- java - 如何在 Java 中将 int 数据转换为压缩十进制
- css - 我可以选择具有类(任何类)的元素吗
- javascript - 如何在没有鼠标事件的情况下在openlayers中从其他世界中找到当前世界中的等效坐标
- html - 变量插入闪烁功能
- hive - HIve:表创建失败并显示“由于 OWN_TASK_FAILURE 导致顶点未成功”
- json - Scala Play:将大型 JSON 模板外部化的方法是什么?
- python - 如何使 scipy.optimize.curve_fit 产生更好的正弦回归拟合?
- javascript - javascript window.open 没有为不同的网址打开不同的窗口?
- jquery - 图像相乘