Integer ranges
Split the day into windows using >= and < on a number field.
Morning 12
shop.metaobjects.test_booking_slot
| query: "fields.slot_number:>=1 fields.slot_number:<13 fields.status:available"
,
sort_key: "fields.slot_number"
-
#1
Oct 27, 9:00 AM
· Alex
-
#1
Nov 2, 2:00 AM
-
#3
Oct 28, 5:00 AM
· Jenna
+ 9 more
Afternoon 17877
shop.metaobjects.test_booking_slot
| query: "fields.slot_number:>=13 fields.status:available"
,
sort_key: "fields.slot_number"
-
#13
Nov 2, 8:00 AM
-
#14
Nov 2, 8:30 AM
-
#15
Nov 2, 9:00 AM
+ 17874 more
Negation and "has a value"
A leading - negates a term. :* matches any value that's present.
Not available 12015
shop.metaobjects.test_booking_slot
| query: "-fields.status:available"
No stylist assigned 10984
shop.metaobjects.test_booking_slot
| query: "-fields.stylist:* fields.status:available"
Stylist assigned 6905
shop.metaobjects.test_booking_slot
| query: "fields.stylist:* fields.status:available"
Prefix match on text
A trailing * matches any value that starts with the prefix.
shop.metaobjects.test_booking_slot
| query: "fields.status:avail*"
17889 matching slots
-
#1
Oct 27, 9:00 AM
· Alex
-
#3
Oct 28, 5:00 AM
· Jenna
-
#4
Oct 28, 6:00 AM
· Jenna
+ 17886 more
Sorting and reverse
Same query, three orderings. sort_key takes a field or a system attribute.
Highest slot number first
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "fields.slot_number"
,
reverse: true
-
#30000
May 29, 10:30 AM
· Martha
-
#29999
May 29, 10:00 AM
· Martha
-
#29998
May 29, 9:30 AM
· Martha
+ 17886 more
Recently edited
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "updated_at"
,
reverse: true
-
#23999
Jan 24, 9:00 AM
· Martha
-
#23997
Jan 24, 8:00 AM
· Martha
-
#23995
Jan 24, 7:00 AM
· Martha
+ 17886 more
By handle
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "handle"
-
#1
Nov 2, 2:00 AM
-
#3
Nov 2, 3:00 AM
-
#5
Nov 2, 4:00 AM
+ 17886 more
Availability per stylist (counts only)
Two queries for each stylist, binding $s to the loop variable. Only .size is read.
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$s fields.status:available",
s: s
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$s -fields.status:available",
s: s
| Stylist | Open | Booked |
| Alex |
1 |
1 |
| Bobbie |
297 |
206 |
| Cassie |
293 |
207 |
| Jenna |
4 |
0 |
| Martha |
6029 |
3895 |
| Sally |
281 |
219 |
Pagination
Each filtered list has its own page key, so two paginated lists on one page page separately.
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "fields.slot_number"
-
#39
Nov 2, 9:00 PM
-
#41
Nov 2, 10:00 PM
-
#43
Nov 2, 11:00 PM
-
#44
Nov 2, 11:30 PM
-
#45
Nov 3, 12:00 AM
-
#46
Nov 3, 12:30 AM
-
#47
Nov 3, 1:00 AM
-
#48
Nov 3, 1:30 AM
-
#50
Nov 3, 2:30 AM
-
#54
Nov 3, 4:30 AM
Merchant-editable filter
Bindings come from section settings, so merchants can change the filter in the theme editor without touching code.
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$who fields.status:$status",
who: section.settings.stylist, status: section.settings.status
4 slots for Jenna
with status available
-
#3
Oct 28, 5:00 AM
· Jenna
-
#4
Oct 28, 6:00 AM
· Jenna
-
#15886
Nov 10, 2:30 AM
· Jenna
-
#15887
Nov 10, 3:00 AM
· Jenna