You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ArangoDB图中查询指定结构的Attraction与Hotel节点组合?

解决ArangoDB图结构精准匹配问题

你需要的是严格匹配四节点的特定路径结构:起始景点(A1)→景点(A2)→酒店(H),同时起始景点A1还得指向另一个独立的景点(A3)。你之前的查询返回部分匹配结果,是因为没有对节点类型、路径长度和额外的邻居关系做精准约束。

我给你写一个针对性的查询语句,一步步帮你锁定目标结构:

FOR A1 IN Attraction
  # 先收集A1所有直接指向的Attraction节点
  LET connectedAttractions = (
    FOR neighbor IN 1..1 OUTBOUND A1 GRAPH '你的图名称'
      FILTER neighbor._type == 'Attraction'
      RETURN neighbor
  )
  # 确保A1至少有2个Attraction邻居(满足"A1还指向另一个Attraction"的要求)
  FILTER LENGTH(connectedAttractions) >= 2
  
  # 遍历A1的每个Attraction邻居,找那些能连到Hotel的节点A2
  FOR A2 IN connectedAttractions
    LET connectedHotels = (
      FOR hotel IN 1..1 OUTBOUND A2 GRAPH '你的图名称'
        FILTER hotel._type == 'Hotel'
        RETURN hotel
    )
    # 确保这个A2确实有指向Hotel的边
    FILTER LENGTH(connectedHotels) > 0
    
    # 遍历A2连接的每个Hotel
    FOR H IN connectedHotels
      # 从A1的Attraction邻居里挑出不是A2的那个(也就是A3)
      LET A3 = FIRST(
        FOR a IN connectedAttractions
          FILTER a != A2
          RETURN a
      )
      
      # 返回完整的四节点组合
      RETURN {
        startAttraction: A1,
        toHotelAttraction: A2,
        targetHotel: H,
        extraAttraction: A3
      }

关键逻辑说明:

  • 先用connectedAttractions收集A1的所有直接景点邻居,通过LENGTH(connectedAttractions) >=2确保A1满足"还指向另一个Attraction"的条件
  • 对每个A1的邻居A2,检查它是否能连接到Hotel,过滤掉不符合的A2
  • 最后从A1的邻居中排除A2,得到额外的景点A3,确保返回的是完整的四节点结构

这个查询只会返回完全符合你要求的节点组合,不会再出现部分匹配的结果。

内容的提问来源于stack exchange,提问作者Fleur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:38:11