且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Neo4j/Cypher:如果满足某些条件,则创建关系

更新时间:2023-11-10 09:44:46

执行条件变异操作有一个技巧:条件为true时,使用CASE语句返回长度为1的列表,否则为空列表.然后FORACH遍历该数组以执行CREATEMERGE

There is a trick to do a conditional mutating operation: use a CASE statement to return a list of length 1 when the condition is true, otherwise an empty list. Afterwards a FORACH to iterate over that array to do the CREATE or MERGE

...
WITH a, x, AffintyScore, SearchScore, TotalScore, Total, 
  CASE AffinityScore WHEN 0 THEN [] ELSE [1] END as array
FOREACH (x in array | 
   MERGE
   x-[:IS_SIMILAR_TO {
   SimilarityScore:Total,
   AffinityScore:AffinityScore,
   SearchScore:SearchScore
   }]->a 
)
RETURN a, x, AffintyScore, SearchScore, TotalScore 
ORDER BY TotalScore DESC