ArangoDB遍历查询:如何检查指定属性是否存在于任意边?
如何在ArangoDB全路径遍历中检查属性是否存在于任意边中
你的核心问题是原查询的第三个过滤条件错误地校验了所有边的hs_codes值,而你需要的是路径中任意一条边包含hs_codes: '120400'。可以通过以下两种方式修改查询:
修改方案1:使用ANY关键字
将第三个过滤条件改为p.edges[*].hs_codes ANY == '120400',明确指定只要集合中存在任意一个匹配项即可:
FOR v, e, p IN 1..6 INBOUND 'company_node_20_02_23/60673bced674d38fcc9c438f' GRAPH graph_correct OPTIONS {bfs: true, uniqueVertices: 'global', maxIterations: 100000} FILTER p.edges[*].actual_arrival_date ALL >= '2021-04' AND p.edges[*].actual_arrival_date ALL <= '2021-05' AND p.edges[*].hs_codes ANY == '120400' RETURN p
修改方案2:使用IN操作符
也可以用IN来检查目标值是否存在于边的hs_codes集合中,效果完全一致:
FOR v, e, p IN 1..6 INBOUND 'company_node_20_02_23/60673bced674d38fcc9c438f' GRAPH graph_correct OPTIONS {bfs: true, uniqueVertices: 'global', maxIterations: 100000} FILTER p.edges[*].actual_arrival_date ALL >= '2021-04' AND p.edges[*].actual_arrival_date ALL <= '2021-05' AND '120400' IN p.edges[*].hs_codes RETURN p
关键说明
- 前两个过滤条件保留
ALL关键字,确保路径中所有边的actual_arrival_date都落在2021-04到2021-05区间内 - 第三个条件通过
ANY或IN实现“任意一条边匹配”的逻辑,完全符合你的预期需求
内容的提问来源于stack exchange,提问作者himanshu jha
相关产品推荐
相关产品推荐

