How to Match Only a Subset of String in a Word

15 replies
Last updated: Dec 15, 2020
Hello guys, need some help with GROQ. How do you go about matching only a subset of string in a given word?
Say I have data like:


[
  { id: 1, item: "SPTL65-UWW-13" },
  { id: 2, item: "HDTL65-WW" },
  { id: 3, item: "HDTL65-UWW" }
]
My goal is to return only the second item which has specific
WW
and NOT
UWW
.
I have come up with this query:


*[item match "-WW*"]
but this returns no match
*[item match "WW*"]
returns the 3 items though
Dec 9, 2020, 10:48 AM
Hey there! 🙂 Maybe this works for you?

*[item match "*-WW-*"]
Dec 9, 2020, 12:08 PM
Alternatively, if WW and UWW are the only options, you could also try this:
*[!(item match "*-UWW-*")]
Dec 9, 2020, 12:45 PM
Thanks. I’ll try your suggestions.
Dec 10, 2020, 12:59 AM
Thanks
user A
, your suggestion works.
Dec 10, 2020, 1:04 AM
user M
while yours also works, there are other options than those items.
Dec 10, 2020, 1:04 AM
Guys, appreciate the help. Thank you so much
Dec 10, 2020, 1:05 AM
You're welcome 😀 Great to hear that it works!
Dec 10, 2020, 6:20 AM
Hello guys
user A
and
user M
, I’m encountering some problems, unfortunately there are oddities with “match” on array values.
Dec 15, 2020, 6:03 AM
Even if equality
==
doesn’t work 😔
Dec 15, 2020, 6:04 AM
Dec 15, 2020, 6:04 AM
Upon further playing with this, I guess it works as expected. However, I guess what I’m really trying to achieve is to remove the other items in
productConfigurator
that aren’t matching the query above
Dec 15, 2020, 6:32 AM
I think I understand what you need 🙂 One way to do it could be to add the same filter when selecting which attributes you need returned. I played a bit around with the arcade you sent and I think this should do the trick.
However there might be some hidden fancy GROQ feature I don't know of which does this better.

It does remove all the non-matching items from the array though. Hope it helps!
Dec 15, 2020, 6:45 AM
Oh, I could cry right now
user A
. Thank you so much. 🙏
Dec 15, 2020, 6:47 AM
That’s it. Thank you so much. You save me today! God bless. huhu
Dec 15, 2020, 6:48 AM
You're very welcome 😁 Glad to hear it helps!
Dec 15, 2020, 6:52 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.

Categorized in