pub struct StructuredQuery {
pub end_at: Option<Cursor>,
pub find_nearest: Option<FindNearest>,
pub from: Option<Vec<CollectionSelector>>,
pub limit: Option<i32>,
pub offset: Option<i32>,
pub order_by: Option<Vec<Order>>,
pub select: Option<Projection>,
pub start_at: Option<Cursor>,
pub where_: Option<Filter>,
}
Expand description
A Firestore query. The query stages are executed in the following order: 1. from 2. where 3. select 4. order_by + start_at + end_at 5. offset 6. limit
This type is not used in any activity, and only used as part of another schema.
Fields§
§end_at: Option<Cursor>
A potential prefix of a position in the result set to end the query at. This is similar to START_AT
but with it controlling the end position rather than the start position. Requires: * The number of values cannot be greater than the number of fields specified in the ORDER BY
clause.
find_nearest: Option<FindNearest>
Optional. A potential nearest neighbors search. Applies after all other filters and ordering. Finds the closest vector embeddings to the given query vector.
from: Option<Vec<CollectionSelector>>
The collections to query.
limit: Option<i32>
The maximum number of results to return. Applies after all other constraints. Requires: * The value must be greater than or equal to zero if specified.
offset: Option<i32>
The number of documents to skip before returning the first result. This applies after the constraints specified by the WHERE
, START AT
, & END AT
but before the LIMIT
clause. Requires: * The value must be greater than or equal to zero if specified.
order_by: Option<Vec<Order>>
The order to apply to the query results. Firestore allows callers to provide a full ordering, a partial ordering, or no ordering at all. In all cases, Firestore guarantees a stable ordering through the following rules: * The order_by
is required to reference all fields used with an inequality filter. * All fields that are required to be in the order_by
but are not already present are appended in lexicographical ordering of the field name. * If an order on __name__
is not specified, it is appended by default. Fields are appended with the same sort direction as the last order specified, or ‘ASCENDING’ if no order was specified. For example: * ORDER BY a
becomes ORDER BY a ASC, __name__ ASC
* ORDER BY a DESC
becomes ORDER BY a DESC, __name__ DESC
* WHERE a > 1
becomes WHERE a > 1 ORDER BY a ASC, __name__ ASC
* WHERE __name__ > ... AND a > 1
becomes WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
select: Option<Projection>
Optional sub-set of the fields to return. This acts as a DocumentMask over the documents returned from a query. When not set, assumes that the caller wants all fields returned.
start_at: Option<Cursor>
A potential prefix of a position in the result set to start the query at. The ordering of the result set is based on the ORDER BY
clause of the original query. SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;
This query’s results are ordered by (b ASC, __name__ ASC)
. Cursors can reference either the full ordering or a prefix of the location, though it cannot reference more fields than what are in the provided ORDER BY
. Continuing off the example above, attaching the following start cursors will have varying impact: - START BEFORE (2, /k/123)
: start the query right before a = 1 AND b > 2 AND __name__ > /k/123
. - START AFTER (10)
: start the query right after a = 1 AND b > 10
. Unlike OFFSET
which requires scanning over the first N results to skip, a start cursor allows the query to begin at a logical position. This position is not required to match an actual result, it will scan forward from this position to find the next document. Requires: * The number of values cannot be greater than the number of fields specified in the ORDER BY
clause.
where_: Option<Filter>
The filter to apply.
Trait Implementations§
Source§impl Clone for StructuredQuery
impl Clone for StructuredQuery
Source§fn clone(&self) -> StructuredQuery
fn clone(&self) -> StructuredQuery
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for StructuredQuery
impl Debug for StructuredQuery
Source§impl Default for StructuredQuery
impl Default for StructuredQuery
Source§fn default() -> StructuredQuery
fn default() -> StructuredQuery
Source§impl<'de> Deserialize<'de> for StructuredQuery
impl<'de> Deserialize<'de> for StructuredQuery
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for StructuredQuery
impl Serialize for StructuredQuery
impl Part for StructuredQuery
Auto Trait Implementations§
impl Freeze for StructuredQuery
impl RefUnwindSafe for StructuredQuery
impl Send for StructuredQuery
impl Sync for StructuredQuery
impl Unpin for StructuredQuery
impl UnwindSafe for StructuredQuery
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more