facets
Table of Contents
Traits
- HasFacetAggregateConditions
- Shared builder for the "aggregate" facets ({@see HasFacetEdgeAggregate},
{@see HasFacetJoinAggregate}): both keep documents whose related documents
(reached by an edge traversal or a key-join) satisfy an aggregate condition
over a numeric field — `AGG(FOR … [FILTER join] RETURN related.field) <op> @threshold`.
- HasFacetArrayComplex
- Builds the AQL filter fragment for a {@see Facet::ARRAY_COMPLEX} facet: it
keeps documents whose embedded array property holds at least one element
matching the requested sub-field conditions. Composed into the model via
{@see FacetTrait}.
- HasFacetComplexConditions
- Shared builder for the per-field conditions of the "complex" existential
facets ({@see HasFacetEdgeComplex}, {@see HasFacetJoinComplex}): both match
SEVERAL fields on the same related document, each field accepting a single
value, a list (OR) and per-value negation (`-` => `!=`).
- HasFacetEdge
- Builds the AQL filter fragment for an {@see Facet::EDGE} facet: it keeps
documents linked (or, when negated, not linked) to a target vertex through an
inbound edge traversal. The match is driven by {@see HasFacetSimpleConditions}
— a configurable operator (`Facet::OP`, default `eq`) over one or more vertex
fields (`AQL::FIELDS`, default `_key`). Composed via {@see FacetTrait}.
- HasFacetEdgeAggregate
- Builds the AQL filter fragment for an {@see \oihana\arango\models\enums\Facet::EDGE_AGGREGATE}
facet: the aggregate counterpart of {@see HasFacetEdge}. Instead of testing for
the mere existence of a linked vertex, it aggregates a numeric field over ALL
vertices reached through an inbound edge traversal and compares the result to a
threshold — `AGG(FOR doc_<key> IN INBOUND doc <edge> RETURN doc_<key>.<field>) <op> @<key>_0`.
- HasFacetEdgeComplex
- Builds the AQL filter fragment for an {@see Facet::EDGE_COMPLEX} facet: like
{@see HasFacetEdge} it keeps documents linked through an inbound edge
traversal, but matches SEVERAL fields on the same target vertex (AND), each
field accepting multiple values (OR) and per-value negation. Composed into
the model via {@see FacetTrait}.
- HasFacetField
- Builds the AQL filter fragment for a {@see Facet::FIELD} facet: a comparison
on a scalar document property `doc.<property>`, driven by an operator (`op`)
that reuses the filter vocabulary ({@see FilterComparator}: `eq`, `ne`, `gt`,
`ge`, `lt`, `le`, `like`, `nlike`, `match` default, `nmatch`).
- HasFacetIn
- Builds the AQL filter fragment for an {@see Facet::IN} facet: array membership
between the requested values and a document array property `doc.<property>`,
driven by an operator (`op`) that reuses the filter vocabulary
({@see FilterArrayComparator}: `any.in` default, `all.in`, `none.in`, …).
- HasFacetJoin
- Builds the AQL filter fragment for a {@see Facet::JOIN} facet: the key-join
counterpart of {@see HasFacetEdge}. Instead of an edge traversal, it joins a
collection by attribute equality and keeps documents that have at least one
joined document whose field matches the requested value.
- HasFacetJoinAggregate
- Builds the AQL filter fragment for a {@see \oihana\arango\models\enums\Facet::JOIN_AGGREGATE}
facet: the key-join counterpart of {@see HasFacetEdgeAggregate} and the
aggregate counterpart of {@see HasFacetJoin}. Instead of testing for the mere
existence of a joined document, it aggregates a numeric field over ALL joined
documents and compares the result to a threshold —
`AGG(FOR doc_<key> IN <collection> FILTER doc_<key>.<KEY> == doc.<PROPERTY> RETURN doc_<key>.<field>) <op> @<key>_0`.
- HasFacetJoinComplex
- Builds the AQL filter fragment for a {@see Facet::JOIN_COMPLEX} facet: the
key-join counterpart of {@see HasFacetEdgeComplex}. Instead of traversing an
edge, it joins a collection by attribute equality and keeps documents that
have at least one joined document matching SEVERAL fields (AND), each field
accepting multiple values (OR) and per-value negation.
- HasFacetList
- Builds the AQL filter fragment for a {@see Facet::LIST} facet. Kept as a thin
alias over the {@see HasFacetIn} primitive (operator defaults to `any.in`),
preserving the historical type name. Composed into the model via
{@see FacetTrait}.
- HasFacetListField
- Builds the AQL filter fragment for an {@see Facet::LIST_FIELD} (and
{@see Facet::LIST_FIELD_SORTED}) facet. Kept as a thin alias over the
{@see HasFacetIn} primitive (operator defaults to `any.in`), preserving the
historical type names. Composed into the model via {@see FacetTrait}.
- HasFacetSimpleConditions
- Shared builder for the "simple" existential facets ({@see HasFacetEdge},
{@see HasFacetJoin}): both keep documents that have at least one related
document (reached by an edge traversal or a key-join) whose field matches the
requested value.