Backend update Jun 20th 2018
New GROQ Features
- GROQ: Added the
select()
function and=>
pair operator for conditional evaluation, e.g.select(value == "string" => "match", "default")
yielding"match"
ifvalue == "string"
, otherwise"default"
. - GROQ: Added the
...
splat operator which pulls array and object members into the current scope, e.g.[...[1,2], 3, ...[4,5]]
yielding[1,2,3,4,5]
, and similarly{...{"a":1,"b":2}, "c":3, ...{"d":4,"e":5}}
yielding{"a":1,"b":2,"c":3,"d":4,"e":5}
. - GROQ: Added syntactic sugar for conditionals in projections, where the projection
*{_id, value == "string" => {"foo": "bar"}}
yields{_id, "foo": "bar"}
ifvalue == "string"
evaluates totrue
. This is exactly equivalent to*{_id, ...select(value == "string" => {"foo": "bar"}}
. - GROQ:
match
can now use*
wildcards anywhere in the search term, not only at the end, e.g.*[ value match "a*c" ]
.
- Fixed an issue where indexing of arrays containing both references and other content would not index all content properly, leading to missing filter results. We will transparently reindex existing content in the near future, but as a workaround documents can be reindexed manually by making a small change.
- Fixed an issue where large listener events (beyond 64 kB) could be delayed by up to 10 seconds.
- GROQ: Improved performance of conjunctions (
&&
terms), which in particular improved performance significantly for anonymous users. - GROQ:
count()
no longer gives error onnull
arguments.