neo4j - Neo4j 中的 ANY 和 IN 子句有什么区别?
问题描述
Neo4j 有两个不同的子句来查找数组中的值,ANY 和 IN。请解释一下,它们有何不同,因为它们都用于通过检查指定的值是否存在于数组中来过滤数据。
查询#1: MATCH (n) WHERE any(color IN n.liked_colors WHERE color = 'yellow') RETURN n
结果#1:名为 Eskil 的节点
查询#2:匹配 (n) 其中 n.liked_colors 中的“黄色”返回 n
结果#2:名为 Eskil 的节点
如果两个查询都返回相同的结果,那么差异在哪里。
解决方案
在您的简单示例中,结果是相同的。
然而any()
,允许更复杂的过滤方式,特别是当我们不使用它来简单地检测列表中已知值的成员资格时:
MATCH (n:Person)
WHERE any(color in n.liked_colors WHERE (n)<-[:KNOWS|MARRIED*]-(other:Person {eyes:color}))
找到一个人,对于他们喜欢的任何颜色,我们可以遍历给定的模式以找到另一个具有该颜色眼睛的人。
推荐阅读
- testing - Flutter:测试,如何推断部分 UI
- angular - 使用 Google Maps 地理编码服务时,Angular 中使用输入绑定的子组件速度很慢
- javascript - Desandro Masonry v4.2.1 重叠图像无间隙
- kdb - KDB如何从另一个命名空间分配根命名空间中的值?
- java - 双击操作不起作用,而单击对 selenium 中的元素起作用
- bash - AWK 打印和颜色 3 变量
- github - Github文件夹组织效率
- r - 在R中给定“边缘列表中的某些顶点名称未在顶点数据框中列出”时,查找哪些顶点未列出?
- mysql - Mysql:无法弄清楚这个 LEFT JOIN 查询有什么问题
- swift - 嵌入导航控制器时 ARSCNView 不显示对象