neo4j foreach 条件总是执行

neo4j foreach conditional always executing

我有一个用于 if 条件语句的 foreach。当 $blobFile.extension 不是 null 时,我只希望条件为 运行,但是我尝试了几种不同的方法,但这是唯一执行的方法。但是,这个查询似乎总是执行 ¯_(ツ)_/¯ 可能我是盲人,但我们将不胜感激。

$blobFile.extension 是字符串或 Null。 image.url 始终在图像节点内设置。

MERGE (species:Reference:Species{ GUID: $reference.guid })
WITH species
MERGE(image:Image:Media{GUID: $blobFile.imageGuid})
  ON CREATE SET
    image.GUID = apoc.create.uuid(),
    image.creationDate = datetime(),
    image.name = species.name
  ON MATCH SET
    image.name = species.name,
    image.oldFilename = image.filename
WITH species, image

FOREACH(ignoreme in CASE WHEN $blobFile.extension IS NOT NULL THEN [] ELSE [true] END
| SET image.filename = $blobFile.filename, image.url = 'https://www....' + image.GUID + '.' + $blobFile.extension)

不用FOREACH也可以做到,如下:

MERGE (species:Reference:Species{ GUID: $reference.guid })
MERGE (image:Image:Media{GUID: $blobFile.imageGuid})
ON CREATE SET
    image.GUID = apoc.create.uuid(),
    image.creationDate = datetime(),
    image.name = species.name
ON MATCH SET
    image.name = species.name
MERGE (species)<-[r6:IS_ABOUT]-(image)
WITH species, image WHERE $blobFile.extension IS NOT NULL
SET 
    image.filename = $blobFile.filename, 
    image.url = 'https://www....' + image.GUID + '.' + $blobFile.extension