删除neo4j中的最小计数数据
在对neo4j进行一些计算之后,我想删除一些数据。这种方法可以手动完成(计算数据然后删除数据),但我需要有人告诉我是否可以自动完成(在同一查询中计算数据并删除数据)。在使用neo4j中的min()函数进行计数后,我找不到返回最小/最小数据的方法。我可能可以使用order by进行变通,并限制数据,但如果我想使用此方法,我需要确保没有其他选项 这是指向的链接。该数据是一个自定义事件日志,仅包含案例id和活动名称 这就是我已经尝试过的:删除neo4j中的最小计数数据,neo4j,count,min,collect,Neo4j,Count,Min,Collect,在对neo4j进行一些计算之后,我想删除一些数据。这种方法可以手动完成(计算数据然后删除数据),但我需要有人告诉我是否可以自动完成(在同一查询中计算数据并删除数据)。在使用neo4j中的min()函数进行计数后,我找不到返回最小/最小数据的方法。我可能可以使用order by进行变通,并限制数据,但如果我想使用此方法,我需要确保没有其他选项 这是指向的链接。该数据是一个自定义事件日志,仅包含案例id和活动名称 这就是我已经尝试过的: //LOAD DATA LOAD CSV with heade
//LOAD DATA
LOAD CSV with headers FROM "file:///*.csv"
AS line
Create (:Activity {CaseId:line.Case_ID,
Name:line.Activity })
LOAD CSV with headers FROM "file:///*.csv"
AS line
Create (:CaseActivity {CaseId:line.Case_ID,
Name:line.Activity })
//SEQUENCE DISCOVERY
match (c:Activity)
with collect(c) AS Caselist
unwind range(0,Size(Caselist) - 2) as idx
with Caselist[idx] AS s1, Caselist[idx+1] AS s2
match (b:CaseActivity),(a:CaseActivity)
where s1.CaseId = s2.CaseId AND
s1.Name = a.Name AND
s2.Name = b.Name AND
s1.CaseId = a.CaseId AND
s2.CaseId = b.CaseId
merge (a)-[:NEXT {relation:"NEXT"}]->(b)
match(a:Activity)
with a.CaseId as id,
collect (a.Name) as Trace_Type
match(b:CaseActivity)
where id = b.CaseId
return count (distinct b.CaseId) as Frequencies, Trace_Type, Collect(distinct b.CaseId) as CaseId
order by Frequencies desc
您的问题没有指定要删除的内容。此查询假设您希望上次查询删除
b
节点(并返回有关已删除b
节点的一些数据):
包含从已删除的b
节点(如Frequencies
和CaseId
)获得的值的变量在删除节点后仍然有效
关于您的特定示例,需要注意的一件棘手的事情是,您的最后一个
WITH
子句使用了Trace\u Type
作为分组键。为了避免更改分组键(从而可能更改返回的结果),我只是在WITH
子句中添加了COLLECT(DISTINCT b)作为bs
。然后,因为每个bs
都是b
节点列表(对于Trace\u类型
),所以我使用FOREACH
删除每个列表中的节点。好的,很抱歉,这是我第一次使用这个平台问这样的问题,我想删除的是CaseId中频率最低的所有节点。我尝试了您的解决方案,并且似乎删除了CaseActivity Labels中的所有数据。您能否更新您的问题以提供您尝试执行的操作的准确描述?例如,您是否正在尝试删除所有具有最不频繁的CaseId
值的caseivity
节点?如果是这样的话,你如何准确地定义“频率”——Trace\u Type
是如何涉及的?对不起,我当时很忙。是的,正如你所说,我需要删除CaseActivity中所有频率最低的节点。所以Trace_Type是CaseActivity.Name的集合,它实际上不必显示在返回中,只要我能够以最少的频率删除节点。Frequencies是具有相同跟踪类型的CaseId数。
MATCH (a:Activity)
WITH a.CaseId as id, COLLECT(a.Name) AS Trace_Type
MATCH (b:CaseActivity)
WHERE id = b.CaseId
WITH
COUNT(distinct b.CaseId) AS Frequencies,
Trace_Type,
COLLECT(distinct b.CaseId) AS CaseId,
COLLECT(DISTINCT b) AS bs
FOREACH(x IN bs | DELETE x)
RETURN Frequencies, Trace_Type, CaseId
ORDER BY Frequencies DESC;