首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在密码中匹配数组的值?

如何在密码中匹配数组的值?
EN

Stack Overflow用户
提问于 2018-04-20 04:40:10
回答 1查看 93关注 0票数 1
代码语言:javascript
复制
MATCH (s:Product {id:'4538875'})-[r]-> (o:Attributes) 
WHERE any(key in keys(o) WHERE o[key] contains 'type-c') 
return o

在这个查询中,'okey‘的值可以是数组或字符串。当它是一个数组时,"contains“关键字就不能工作了。那么,如何修改这个查询以便能够与数组的每个值匹配呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-20 06:56:11

如果要将数组转换为字符串,则REDUCE函数将帮助您(只需要一个不是数组的值即可转换为数组):

代码语言:javascript
复制
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

代码语言:javascript
复制
RETURN apoc.convert.toString([1,2,3,'abc'])

更新

如果不转换为字符串,则只需遍历数组即可。例如:

代码语言:javascript
复制
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 T
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49934095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档