✨Discover storytelling in the AI age with Pixar's Matthew Luhn at Sanity Connect, May 8th—register now

GROQ query to find all the different categories of products

By Mohammed Hussam Khatib


[_type == 'category']{
 'id':*[defined(categories) && _type == 'product' && references(^._id)][0]{

This GROQ query can be used to list out all categories of a product and filter out the categories of which there exist no product of that particular category.
This is using the default schema of Next.js E-commerce

Explanation of the query:

  1. *[_type == 'category'] : Find all documents with a type of category.
  2. retrieve the category title and perform a nested query which joins all products which references _id.If there exist atleast a single output through this query , it means there exist atleast a single product with that category.
  3. [defined(id)]: filter out all the returned data where the nested query is not defined.