neo4j - Neo4j 比较两个数组,Cypher Query
问题描述
有没有办法比较Neo4j
密码查询中的两个数组?我已经为每个创建了房地产,其中一些amenities
是用逗号分隔的字符串属性。
我需要将所有节点标记Estate
为amenities split
包含array parameter
。
MATCH (e:Estate)
WHERE (a IN ["Laundry","Dryer"] WHERE a IN SPLIT(e.amenities,","))
RETURN e
如何做到这一点?
解决方案
amenities
对于您的用例,更新为包含字符串列表而不是单个逗号分隔的字符串会更有效。这样,您的查询根本不需要使用SPLIT
。在以下示例中,我将继续使用SPLIT(e.amenities,",")
,但理想情况下应将其替换为e.amenities
。如果要测试是否
amenities
包含列表中的所有值,可以使用ALL函数:MATCH (e:Estate) WHERE ALL(a IN ["Laundry","Dryer"] WHERE a IN SPLIT(e.amenities,",")) RETURN e
如果要测试是否
amenities
包含列表中的任何值,可以使用ANY函数:MATCH (e:Estate) WHERE ANY(a IN ["Laundry","Dryer"] WHERE a IN SPLIT(e.amenities,",")) RETURN e
推荐阅读
- angularjs - 通过 JS 类销毁的 Fullcalendar 自定义视图会引发错误
- php - 从 ajax 调用中检索值
- c# - 将许多字段传递到聚合管道中的下一阶段
- javascript - 更改其中存在的输入字段的背景颜色后,字段集顶部边框中断:仅在 IE 11 中
- javascript - 如何从javascript函数为gridview文本框分配变量值
- node.js - 如何从 Nodejs 中的不同模式获取数据
- reactjs - JSX 推荐的传递真值 prop 的实践
- sql - Postgres JSON:在不知道密钥的情况下获取第一个节点值
- cordova - 当应用程序在后台 ionic-cordova 中运行时如何与服务器交互?
- maxima - 最大值匹配商函数