Cypher查询给出java.lang.OutOfMemoryError

Cypher查询给出java.lang.OutOfMemoryError,java,neo4j,cypher,Java,Neo4j,Cypher,在Neo4j shell中键入此查询时: MATCH (b:PHARMA)-[r:HAS_DONATED]->(a:DOCTOR) WITH a,r,b, r.DECL_AVANT_MONTANT as total, COUNT(r) as count MERGE (b)-[:RELATIONSHIP { totalDECL: total, numberDECL: count }]->(a); 我收到这个消息: Error occured in server thread; nes

在Neo4j shell中键入此查询时:

MATCH (b:PHARMA)-[r:HAS_DONATED]->(a:DOCTOR)
WITH a,r,b, r.DECL_AVANT_MONTANT as total, COUNT(r) as count
MERGE (b)-[:RELATIONSHIP {
totalDECL: total,
numberDECL: count
}]->(a);
我收到这个消息:

Error occured in server thread; nested exception is: java.lang.OutOfMemoryError: Java heap space

你知道怎么解决这个问题吗?

我不知道这是否有帮助。但以下是针对您案例的另一个查询:

MATCH (b:PHARMA)-[r:HAS_DONATED]->(a:DOCTOR)      
WITH a, b, SUM(r.DECL_AVANT_MONTANT) as total, COUNT(r) as count   
MERGE (b)-[:RELATIONSHIP {   
totalDECL: total,   
numberDECL: count  
}]->(a);

我使用以下查询解决了我的问题:

USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:c:/sunshine.anonymes.csv" AS line
FIELDTERMINATOR ','
MATCH (b:DOCTOR {ID: line.BENEF_PS_ID})
MATCH (a:PHARMA {NAME: line.LABO})
MERGE (a)-[r:IS_LINKED_TO]->(b)
ON CREATE SET r.numberDECL = 1, r.totalDECL = toINT(line.DECL_AVANT_MONTANT)
ON MATCH SET r.numberDECL = r.numberDECL +1, r.totalDECL = line.totalDECL + r.totalDECL;
基本上,我在csv导入期间创建关系,并在整个过程中更新属性


谢谢你们的帮助,伙计们

计数(r)作为计数的意义是什么?结果将始终为1,因为在
WITH
子句中使用
r
。制药节点和医生节点可以有多个HAS\u关系。我试图建立一种单一的关系来总结它。它必须包含捐赠关系的数量和捐赠金额的总和。明白了吗?如果您运行以下查询:
MATCH(b:PHARMA)-[r:HAS\u investate]->(a:DOCTOR),其中a,r,b,r.DECL\u AVANT\u MONTANT作为总计,COUNT(r)作为COUNT RETURN COUNT(*)
您将看到合并大量数据,这就是为什么您的事务大小会填满所有可用堆并爆炸