How to Match Only a Subset of String in a Word
15 replies
Last updated: Dec 15, 2020
D
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:
My goal is to return only the second item which has specific
I have come up with this query:
Say I have data like:
[ { id: 1, item: "SPTL65-UWW-13" }, { id: 2, item: "HDTL65-WW" }, { id: 3, item: "HDTL65-UWW" } ]
WWand 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
B
Hey there! 🙂 Maybe this works for you?
*[item match "*-WW-*"]
Dec 9, 2020, 12:08 PM
P
Alternatively, if WW and UWW are the only options, you could also try this:
*[!(item match "*-UWW-*")]
Dec 9, 2020, 12:45 PM
D
Thanks. I’ll try your suggestions.
Dec 10, 2020, 12:59 AM
D
Thanks
user A
, your suggestion works.Dec 10, 2020, 1:04 AM
D
user M
while yours also works, there are other options than those items.Dec 10, 2020, 1:04 AM
D
Guys, appreciate the help. Thank you so much
Dec 10, 2020, 1:05 AM
B
You're welcome 😀 Great to hear that it works!
Dec 10, 2020, 6:20 AM
D
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
D
Even if equality
==doesn’t work 😔
Dec 15, 2020, 6:04 AM
D
See here: https://groq.dev/EjXZ2jAV294vJCGBwOEoPC
Dec 15, 2020, 6:04 AM
D
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
productConfiguratorthat aren’t matching the query above
Dec 15, 2020, 6:32 AM
B
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!
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
D
Oh, I could cry right now
user A
. Thank you so much. 🙏Dec 15, 2020, 6:47 AM
D
That’s it. Thank you so much. You save me today! God bless. huhu
Dec 15, 2020, 6:48 AM
B
You're very welcome 😁 Glad to hear it helps!
Dec 15, 2020, 6:52 AM
Sanity– build remarkable experiences at scale
Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.