删除neo4j中的最小计数数据

删除neo4j中的最小计数数据,neo4j,count,min,collect,Neo4j,Count,Min,Collect,在对neo4j进行一些计算之后,我想删除一些数据。这种方法可以手动完成(计算数据然后删除数据),但我需要有人告诉我是否可以自动完成(在同一查询中计算数据并删除数据)。在使用neo4j中的min()函数进行计数后,我找不到返回最小/最小数据的方法。我可能可以使用order by进行变通,并限制数据,但如果我想使用此方法,我需要确保没有其他选项 这是指向的链接。该数据是一个自定义事件日志,仅包含案例id和活动名称 这就是我已经尝试过的: //LOAD DATA LOAD CSV with heade

在对neo4j进行一些计算之后,我想删除一些数据。这种方法可以手动完成(计算数据然后删除数据),但我需要有人告诉我是否可以自动完成(在同一查询中计算数据并删除数据)。在使用neo4j中的min()函数进行计数后,我找不到返回最小/最小数据的方法。我可能可以使用order by进行变通,并限制数据,但如果我想使用此方法,我需要确保没有其他选项

这是指向的链接。该数据是一个自定义事件日志,仅包含案例id和活动名称

这就是我已经尝试过的:

//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;