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

ArangoDB从边集合获取数据时如何添加过滤条件

问题解决方案

错误原因

你的查询存在两个核心问题导致返回null:

  • FILTER r._key == 1 中ArangoDB的_key字段默认是字符串类型,直接和数字1匹配无法命中对应房间文档
  • 子查询里FILTER rooms_users.type == "admin"写法错误,遍历边集合时不能直接用边集合名读取属性,需要指定当前遍历到的边变量来获取属性值

修正后的查询语句

FOR r IN rooms
    FILTER r._key == "1"
    LET admins = (
        FOR u, edge IN ANY r rooms_users
            FILTER edge.type == "admin"
            RETURN u
    )
RETURN MERGE(r, {admin: admins[0]})

修改说明

  1. 将r._key == 1调整为r._key == "1",匹配字符串类型的_key值
  2. 子查询遍历语法改为FOR u, edge IN ANY r rooms_users,第二个变量edge即代表当前遍历到的rooms_users边文档,直接读取edge.type即可拿到边的类型属性做过滤
  3. MERGE方法支持直接传入多个对象合并,不需要额外包裹成数组,写法更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:36:00