MATCH (s:Product {id:'4538875'})-[r]-> (o:Attributes)
WHERE any(key in keys(o) WHERE o[key] contains 'type-c')
return o在这个查询中,'okey‘的值可以是数组或字符串。当它是一个数组时,"contains“关键字就不能工作了。那么,如何修改这个查询以便能够与数组的每个值匹配呢?
发布于 2018-04-20 06:56:11
如果要将数组转换为字符串,则REDUCE函数将帮助您(只需要一个不是数组的值即可转换为数组):
WITH [1,2,3,'abc'] as array,
'abc' as string
RETURN REDUCE(res='', e in [] + array | res + e) as arrayToString,
REDUCE(res='', e in [] + string | res + e) as testStringToString或者您可以使用 function from the APOC library
RETURN apoc.convert.toString([1,2,3,'abc'])更新
如果不转换为字符串,则只需遍历数组即可。例如:
MERGE (T1:Test {id: 1}) SET T1.value1 = 'abc'
MERGE (T2:Test {id: 2}) SET T2.value2 = ['def', 'xyzab']
WITH true AS tmp
MATCH (T:Test)
WHERE ANY(k IN KEYS(T)
WHERE ANY(v IN [] + T[k]
WHERE toString(v) CONTAINS 'ab'
)
)
RETURN Thttps://stackoverflow.com/questions/49934095
复制相似问题