我们正在更新数据库中的数据,对于某些节点,由于遗留数据,我们可能会以字符串或列表的形式找到属性。我想将字符串转换为空列表并保持列表不变。我尝试过这样的事情:
MATCH (a:part) WHERE NOT EXISTS((a.serials)[0]) SET a.serials=[] 返回一个
但它只是抛出一个错误。
任何想法?
您将需要使用 APOC 库来检查属性类型:
MATCH (a:part)
WHERE NOT apoc.meta.isType(a.serials) = "LIST"
SET a.serials=[]
return a
您可以查看文档以获取更多信息:https ://neo4j.com/labs/apoc/4.1/overview/apoc.meta/apoc.meta.isType/
Cypher 对此没有内置函数,但是您可以使用一个小技巧来检查向属性添加元素是否会使其大小增加 1 ,例如
MATCH (n:Award)
RETURN size(n.years + 11) = size(n.years)+1 AS isList
+签名、添加元素、连接或求和。因此,要将字符串与数组区分开来,我们需要添加两个数字。