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

查询多对多关联时,如何返回扁平字符串数组而非对象数组?

问题:如何让EdgeDB查询返回数组形式的关联属性值

给定以下EdgeDB数据模型:

type default::Genre {
  required property name -> std::str {
    constraint std::exclusive;
  };
};

type default::Movie {
  required property title -> std::str;
  property year -> std::int64;
  multi link genres -> default::Genre;
};

执行查询:

select Movie {
  title,
  year,
  genres: {name}
}
limit 1

得到结果:

[
  {
    "title": "Troja",
    "year": 2004,
    "genres": [
      {
        "name": "Action"
      },
      {
        "name": "War"
      },
      {
        "name": "Adventure"
      },
      {
        "name": "History"
      }
    ]
  }
]

希望修改查询语句,得到如下格式的结果:

[
  {
    "title": "Troja",
    "year": 2004,
    "genres": [
      "Action", "War", "Adventure", "History"
    ]
  }
]

解决方案

可以使用EdgeDB的array()函数配合路径表达式直接提取关联对象的属性值,修改后的查询如下:

select Movie {
  title,
  year,
  genres := array(.genres.name)
}
limit 1

说明

  • .genres.name是路径表达式,会遍历当前Movie对象关联的所有Genre实例,直接提取它们的name属性值
  • array()函数将这些零散的属性值打包成一个字符串数组,最终返回你需要的格式

如果需要查阅文档,可搜索关键词:array函数、路径表达式


内容的提问来源于stack exchange,提问作者HWM-Rocker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:15:28