I'm learning to code and now I am on the stage of a small pet project with Sanity as a CMS. Long story short, making an API I'm trying to fetch cocktails data with votes for the cocktails. The votes are stored within persons who voted:
GROQ query
*[
  _type == "cocktail" &&
    !(_id in path('drafts.**'))
 ] {
  name,
  _id,
    "votes" : *[_type == "person" && references(^._id)] {
    votes[] {
        score,
        "id": cocktail._ref
        }
    } 
}
which returns
[
  {
    "_id": "pdUGiuRzgLGpnc4cfx76nA",
    "name": "Cuba Libre",
    "votes": [
      {
        "votes": {
          "id": "pdUGiuRzgLGpnc4cfx76nA",
          "score": 2
        }
      },
      {
        "votes": {
          "id": "pdUGiuRzgLGpnc4cfx76nA",
          "score": 2
        }
      }
    ]
  },
  {
    "_id": "pdUGiuRzgLGpnc4cfxBOyM",
    "name": "The ERSH7",
    "votes": []
  }
]
As you can see, the merge provides embedded arrays of votes meanwhile I want sth like:
[{
  ...cocktail attributes...
  "votes" : [
    {score: 2, id: pdUGiuRzgLGpnc4cfx76nA},
    {score: 2, id: pdUGiuRzgLGpnc4cfx76nA}
  ]
 }
... more cocktails....
]
Trying to get this I modified the query:
*[
  _type == "cocktail" &&
    !(_id in path('drafts.**'))
 ] {
  name,
  _id,
    "votes" : *[_type == "person" && references(^._id)].votes[] {
        score,
        "id": cocktail._ref
    }
}
which should take a projection from every element of the votes arr. Unfortunately I get empty arrays:
[
{
  "_id": "pdUGiuRzgLGpnc4cfx76nA",
  "name": "Cuba Libre",
  "votes": [
    {},
    {}
  ]
}
...more cocktails
]
How can I achieve the desired result? Thank you for reading! Would appreciate any help!