在此图中,您可以看到一个节点的所有属性,我想要实现的是基于CUI(id)合并节点并将这些属性添加到一个初始节点。
我尝试了
START first=node(*), second=node(*)
WHERE exists (first.id) and exists (second.id)
WITH first, second
SKIP 20000 LIMIT 20000
WHERE first.id= second.id
SET first=second;
但没有任何变化
然后我尝试致电APOC
match (f:Disease),(b:Disease) where f.id=b.id
CALL apoc.refactor.mergeNodes([f,b]) yield node
return "none";
这给我一个错误
ServiceUnavailable:WebSocket连接失败。由于安全 限制在您的网络浏览器中,失败的原因不是 可用于此Neo4j驱动程序。请使用您的浏览器开发 控制台确定失败的根本原因。常见原因 使用错误的连接URL包含数据库不可用 或暂时的网络问题。如果启用了加密,请确保 您的浏览器配置为信任Neo4j证书 配置使用。 WebSocket
readyState
是:3
有人可以帮助进行合并节点并添加属性的查询,这样我就不会丢失信息吗?
答案 0 :(得分:1)
首先,运行此命令以创建唯一性约束,并在Disease的id
属性上添加索引。 [重要]
CREATE CONSTRAINT ON (d:Disease) ASSERT d.id IS UNIQUE
然后运行以下查询以加载数据。 如果不存在该节点,则会创建该节点并设置属性。 如果该节点已经存在,它将附加值。
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///ConditionConcepts.csv' AS line FIELDTERMINATOR '\t'
MERGE (disease:Disease {id: line.CUI})
ON CREATE SET
disease.name_doctor = line.name,
disease.relevance = line.cui_relevance,
disease.trials = line.trials_count,
disease.search = line.search_frequency,
disease.select = line.select_frequency
ON MATCH SET
disease.name_doctor = disease.name_doctor+", "+line.name,
disease.relevance = disease.relevance+", "+line.cui_relevance,
disease.trials = disease.trials+", "+line.trials_count,
disease.search = disease.search+", "+line.search_frequency,
disease.select = disease.select+", "+line.select_frequency
答案 1 :(得分:0)