Package-level declarations
Types
The values a filter operator carries; the fields it names follow from its target.
The single source of what a filter operator needs: its target and arity, the storage capability it requires, how its values are checked, what it costs and how normalization lowers it. Validation, entry gates, normalization and backends read this table instead of restating it.
The semantic specification of the field filter operators (design §6.2): how each operator treats a missing field, an explicit null, array elements and letter case. The expected matches are the current MongoDB behavior, which is canonical; every backend must reproduce them, and the TCK runs every case against every backend.
The single specification of each aggregation group type (design §6.1): its wire name (the enum name, equal to the JSON type), the capability its field must grant and what it costs. Admission, field resolution, the entry gate and the descriptor read it, so a new group type is added here and every exhaustive when over AggregationGroup fails to compile until handled.
What an aggregation metric reads from each record.
The type of a metric's value.
The single specification of each aggregation metric type (design §6.1): its wire name (the enum name, equal to the JSON type), what it reads and with which capabilities, its result type, whether HAVING may compare it and what it costs. Admission, the entry gate, the descriptor and empty-group values read it, so a new metric type is added here and every exhaustive when over AggregationMetric fails to compile until handled.
What a filter operator applies to.
One stored value of a SemanticShape. value is null when the field is absent from the stored record, and a JSON null node when the record stores an explicit null.
The shape of the field a SemanticCase runs against. Each shape comes with a fixed set of SemanticProbes: stored values that cover a missing field, an explicit null, and the ordinary and edge values of that shape.
System fields a filter operator can target without naming them.
How many literal values a filter operator carries.