是否有一种方法可以比较Neo4j
密码查询中的两个数组?我已经为每个amenities
创建了一些房地产,它们都是用逗号分隔的字符串属性。
我需要获取所有标记为Estate
的节点,其中amenities split
包含array parameter
。
MATCH (e:Estate)
WHERE (a IN ["Laundry","Dryer"] WHERE a IN SPLIT(e.amenities,","))
RETURN e
如何实现?
答案 0 :(得分:1)
对于您的用例,更新amenities
以包含字符串的 list 而不是单个逗号分隔的字符串会更加有效。这样,您的查询完全不需要使用SPLIT
。在以下示例中,我将继续使用SPLIT(e.amenities,",")
,但理想情况下应将其替换为e.amenities
。
如果要测试amenities
是否包含列表中的 all 个值,可以使用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