Watch a live product demo 👀 See how Sanity powers richer commerce experiences

How to Query all the Documents that have the Same Start of the ID as the Current Document

4 replies
Last updated: Jul 16, 2020
Ahoy 🙂 I'm trying to query all the documents that have the same start of the ID as the current document. I want to collect the different language versions of the same document. The related docs have the same ID + language suffix
"_id":"627f6815-531b-42ad-962a-f4d41159ac68"
"_id":"627f6815-531b-42ad-962a-f4d41159ac68__i18n_de"
This is what I've tried but it does not work:

*[_type == "project"] | order(_updatedAt desc) {
	_id,
	'lang':__i18n_lang, 
	title,
	'slug': slug.current,
// This is the bit that doesnt work
	"translated": *[_id match ^._id + "*"] { ... }
}
This is my document list that I'm trying to collate:

"result":[
  0:{
    "_id":"627f6815-531b-42ad-962a-f4d41159ac68"
    "lang":"en"
    "slug":"all-football-everything"
    "title":"All Football Everything"
  }
  1:{
    "_id":"627f6815-531b-42ad-962a-f4d41159ac68__i18n_de"
    "lang":"de"
    "slug":"alles-fussball-alles"
    "title":"Alles Fußball Alles"
  }
]
I would like a result that looks like this:

{
  "_id":"627f6815-531b-42ad-962a-f4d41159ac68"
  "lang":"en"
  "slug":"all-football-everything"
  "title":"All Football Everything"
  "translated":{
    "_id":"627f6815-531b-42ad-962a-f4d41159ac68__i18n_de"
    "lang":"de"
    "slug":"alles-fussball-alles"
    "title":"Alles Fußball Alles"
  }
}
Is there a way of doing this? (Using
sanity-plugin-intl-input
)
Jul 15, 2020, 1:02 PM
Ahoy JD! Strange indeed that
match
doesn’t seem to let you use
^._id
in this case, giving an internal server error. I’ll flag this one internally, thanks.
For now, you could work around it as follows:

...
"translated": *[_id > ^._id && _id < ^._id + "a"]
...
Jul 15, 2020, 2:25 PM
Thanks for that Peter! Your suggestion works for finding
d8b5616a-b376-4f16-929f-57b517100b43__i18n_de
from
d8b5616a-b376-4f16-929f-57b517100b43
but not for finding
d8b5616a-b376-4f16-929f-57b517100b43
from
d8b5616a-b376-4f16-929f-57b517100b43__i18n_de
. Is there a way to link the shorter ID to the longer one?What I'm trying to achieve is a language switcher that links to the translated doc no matter what document you are on
Jul 15, 2020, 2:50 PM
Hey again - how about this one? 🙂
...
"translated": *[(_id > ^._id && _id < ^._id + "a") || (^._id > _id && ^._id < _id + "a")]
...
Jul 15, 2020, 6:11 PM
Works! You're a legend. Thanks
Jul 16, 2020, 7:21 AM

Sanity.io – build remarkable experiences at scale

Sanity is a customizable solution that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
After adding the subtitle and running this code npm run graphql-deploy It does nothingSep 15, 2020
how to limit a reference to just one entry in Studio reference input side versus the default as-many-entries-as-you-fill-in-an-array...Sep 18, 2020
Is it possible to fetch more than one "_type" using GROQ?Nov 2, 2020
I want to add a view with the Structure builder (S.view.component) where I list similar documents based on the title. What...Sep 23, 2020
Is there a structure builder example where the format of each preview for the document list is modified?Feb 3, 2021
I have an array of references to a country schema type but it always just returns NULL values for meJan 30, 2021
Hi, I need help with a query for getting the url of an image asset. Here is what I've been trying, but I only get the _ref...Dec 1, 2020
Sanity UI looks brilliant :smiley: Is something like the current date picker possible at the moment? I’m not sure if anicon...Dec 21, 2020
Hey everyone. I have been coding and may have potentially accidentally deleted something. Does anyone know how to resolve...Dec 26, 2020
Hello everyone and happy new year :raised_hands::skin-tone-2:, I have a problem with outputting Portable Text :disappointed:...Jan 1, 2021

Related contributions

Clean Next.js + Sanity app
- Template

Official(made by Sanity team)

A clean example of Next.js with embedded Sanity ready for recomposition.

Cody Olsen
Go to Clean Next.js + Sanity app

Blog with Built-in Content Editing
- Template

Official(made by Sanity team)

A Sanity-powered blog with built-in content editing and instant previews.

Go to Blog with Built-in Content Editing