首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将内部连接作为GROQ中的条件?

如何将内部连接作为GROQ中的条件?
EN

Stack Overflow用户
提问于 2018-08-27 00:41:06
回答 1查看 1.4K关注 0票数 6

我有一个包含posts的数据集,其中可能包含一系列类别。

如何使用GROQ查询来选择带有标题为"Page"的类别的所有帖子

我想我可以做这样的事:

代码语言:javascript
复制
*[_type == 'post' && categories[]->title == 'Page']{
  body,
  slug,
}

我可能需要使用函数在数组中进行匹配,但是猎豹表太密集了--我就是找不到它。

我的数据集的要点是:

代码语言:javascript
复制
{
  {
    _createdAt: "2018-08-24T17:59:04Z",
    _id: "e84d78f0-81ed-4524-9c36-f38a1f1b2375",
    _rev: "1X9D03Y03BUslZ33alDJwF",
    _type: "category",
    _updatedAt: "2018-08-24T18:13:14Z",
    description: "Pages/Sider",
    title: "Page"
  },
  {
    _createdAt: "2018-08-26T21:57:54Z",
    _id: "3c023e29-b167-4021-be00-5e8dc14f65cc",
    _rev: "WQjjTjyYBRudo6JCOBCUj7",
    _type: "post",
    body: [
      {}
    ],
    categories: [],
  },
  {
    _createdAt: "2018-08-24T17:57:55Z",
    _id: "3d8f0c40-a45d-4dc7-ad95-ed1b49bca4af",
    _rev: "WQjjTjyYBRudo6JCO0spXR",
    _type: "post",
    body: [
      {}
    ],
    categories: [
      {
        _key: "491c03573205",
        _ref: "e84d78f0-81ed-4524-9c36-f38a1f1b2375",
        _type: "reference"
      }
    ]
  }
}

一个简单的查询:

代码语言:javascript
复制
*[_type == 'post']{
  //  body,
  "category": categories[]->title,
  //  slug,
  categories
}

返回:

代码语言:javascript
复制
{
  categories: [],
  category: []
}

{
  categories: [
    {
      _key: "491c03573205",
      _ref: "e84d78f0-81ed-4524-9c36-f38a1f1b2375",
      _type: "reference"
    }
  ],
  category: [
    Page
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 06:55:57

根据联接文档,您可以在GROQ过滤器中使用内部联接。我认为,如果您的类别文档是_type: "category"的话,这应该适用于您:

代码语言:javascript
复制
*[_type == 'post' &&
  *[_type == "category" &&
    title == "Page"][0]._id in categories[]._ref]{
   body,
   slug,
 }

希望这能解决你的问题!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52031312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档