# Query

# Query


```
public class Query
```

<br />

Known direct subclasses [CollectionReference](https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/CollectionReference)

|---|---|
| `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/CollectionReference` | A `CollectionReference` can be used for adding documents, getting document references, and querying for documents (using the methods inherited from `Query`). |

*** ** * ** ***

A `Query` which you can read or listen to. You can also construct refined `Query` objects by adding filters and ordering.

**Subclassing Note**: Cloud Firestore classes are not meant to be subclassed except for use in test mocks. Subclassing is not supported in production code and new SDK releases may break code that does so.

## Summary

| ### Nested types |
|---|
| `public enum https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query.Direction` An enum for the direction of a sort. |

| ### Public fields |
|---|---|
| `final https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#firestore()` |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener)` Starts listening to this query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/android/app/Activity.html activity, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query using an Activity-scoped listener. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(java.util.concurrent.Executor,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html executor, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query with the given options. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(com.google.firebase.firestore.SnapshotListenOptions,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions options, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query with the given options. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(android.app.Activity,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/android/app/Activity.html activity, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query with the given options, using an Activity-scoped listener. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#addSnapshotListener(java.util.concurrent.Executor,com.google.firebase.firestore.MetadataChanges,com.google.firebase.firestore.EventListener<com.google.firebase.firestore.QuerySnapshot>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html executor, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener )` Starts listening to this query with the given options. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/AggregateQuery` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#aggregate(com.google.firebase.firestore.AggregateField,com.google.firebase.firestore.AggregateField...)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/AggregateField aggregateField, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html AggregateField[] aggregateFields )` Calculates the specified aggregations over the documents in the result set of the given query without actually downloading the documents. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/AggregateQuery` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#count()()` Returns a query that counts the documents in the result set of this query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#endAt(java.lang.Object...)(Object[] fieldValues)` Creates and returns a new `Query` that ends at the provided fields relative to the order of the query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#endAt(com.google.firebase.firestore.DocumentSnapshot)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot)` Creates and returns a new `Query` that ends at the provided document (inclusive). |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#endBefore(java.lang.Object...)(Object[] fieldValues)` Creates and returns a new `Query` that ends before the provided fields relative to the order of the query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#endBefore(com.google.firebase.firestore.DocumentSnapshot)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot)` Creates and returns a new `Query` that ends before the provided document (exclusive). |
| `boolean` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#equals(java.lang.Object)(https://developer.android.com/reference/kotlin/java/lang/Object.html o)` |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot>` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#get()()` Executes the query and returns the results as a `QuerySnapshot`. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot>` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#get(com.google.firebase.firestore.Source)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Source source)` Executes the query and returns the results as a `QuerySnapshot`. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#getFirestore()()` Gets the Cloud Firestore instance associated with this query. |
| `int` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#hashCode()()` |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#limit(long)(long limit)` Creates and returns a new `Query` that only returns the first matching documents up to the specified number. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#limitToLast(long)(long limit)` Creates and returns a new `Query` that only returns the last matching documents up to the specified number. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#orderBy(java.lang.String)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field)` Creates and returns a new `Query` that's additionally sorted by the specified field. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#orderBy(com.google.firebase.firestore.FieldPath)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath)` Creates and returns a new `Query` that's additionally sorted by the specified field. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#orderBy(java.lang.String,com.google.firebase.firestore.Query.Direction)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query.Direction direction)` Creates and returns a new `Query` that's additionally sorted by the specified field, optionally in descending order instead of ascending. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#orderBy(com.google.firebase.firestore.FieldPath,com.google.firebase.firestore.Query.Direction)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query.Direction direction)` Creates and returns a new `Query` that's additionally sorted by the specified field, optionally in descending order instead of ascending. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#startAfter(java.lang.Object...)(Object[] fieldValues)` Creates and returns a new `Query` that starts after the provided fields relative to the order of the query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#startAfter(com.google.firebase.firestore.DocumentSnapshot)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot)` Creates and returns a new `Query` that starts after the provided document (exclusive). |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#startAt(java.lang.Object...)(Object[] fieldValues)` Creates and returns a new `Query` that starts at the provided fields relative to the order of the query. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#startAt(com.google.firebase.firestore.DocumentSnapshot)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot)` Creates and returns a new `Query` that starts at the provided document (inclusive). |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#where(com.google.firebase.firestore.Filter)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Filter filter)` Creates and returns a new `Query` with the additional filter. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain the provided value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContains(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain the provided value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContainsAny(java.lang.String,java.util.List<? extends java.lang.Object>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain at least one value from the provided list. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereArrayContainsAny(com.google.firebase.firestore.FieldPath,java.util.List<? extends java.lang.Object>)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values )` Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain at least one value from the provided list. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereEqualTo(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereEqualTo(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereGreaterThan(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereGreaterThan(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereGreaterThanOrEqualTo(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than or equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereGreaterThanOrEqualTo(com.google.firebase.firestore.FieldPath,java.lang.Object)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value )` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than or equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereIn(java.lang.String,java.util.List<? extends java.lang.Object>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value must equal one of the values from the provided list. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereIn(com.google.firebase.firestore.FieldPath,java.util.List<? extends java.lang.Object>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value must equal one of the values from the provided list. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereLessThan(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereLessThan(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereLessThanOrEqualTo(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than or equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereLessThanOrEqualTo(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than or equal to the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(java.lang.String,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(com.google.firebase.firestore.FieldPath,java.lang.Object)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal the specified value. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(java.lang.String,java.util.List<? extends java.lang.Object>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal any of the values from the provided list. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(com.google.firebase.firestore.FieldPath,java.util.List<? extends java.lang.Object>)(@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values)` Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal any of the values from the provided list. |

| ### Extension functions |
|---|---|
| `final @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html<@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html T>>` | `<T extends https://developer.android.com/reference/kotlin/java/lang/Object.html> https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FirestoreKt.https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#(com.google.firebase.firestore.Query).dataObjects(com.google.firebase.firestore.MetadataChanges)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query receiver, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges )` Starts listening to this query with the given options and emits its values converted to a POJO via a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html`. |
| `final @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html<@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot>` | `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FirestoreKt.https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query#(com.google.firebase.firestore.Query).snapshots(com.google.firebase.firestore.MetadataChanges)( @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query receiver, @https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges )` Starts listening to this query with the given options and emits its values via a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html`. |

## Public fields

### firestore

```
public final FirebaseFirestore firestore
```

## Public methods

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(@NonNull EventListener<QuerySnapshot> listener)
```

Starts listening to this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull Activity activity,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query using an Activity-scoped listener.

The listener will be automatically removed during `https://developer.android.com/reference/kotlin/android/app/Activity.html#onStop--`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/android/app/Activity.html activity` | The activity to scope the listener to. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull Executor executor,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html executor` | The executor to use to call the listener. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull MetadataChanges metadataChanges,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query with the given options.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges` | Indicates whether metadata-only changes (specifically, only ` QuerySnapshot.getMetadata()` changed) should trigger snapshot events. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull SnapshotListenOptions options,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query with the given options.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/SnapshotListenOptions options` | Sets snapshot listener options, including whether metadata-only changes should trigger snapshot events, the source to listen to, the executor to use to call the listener, or the activity to scope the listener to. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull Activity activity,
    @NonNull MetadataChanges metadataChanges,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query with the given options, using an Activity-scoped listener.

The listener will be automatically removed during `https://developer.android.com/reference/kotlin/android/app/Activity.html#onStop--`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/android/app/Activity.html activity` | The activity to scope the listener to. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges` | Indicates whether metadata-only changes (specifically, only ` QuerySnapshot.getMetadata()` changed) should trigger snapshot events. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### addSnapshotListener

```
public @NonNull ListenerRegistration addSnapshotListener(
    @NonNull Executor executor,
    @NonNull MetadataChanges metadataChanges,
    @NonNull EventListener<QuerySnapshot> listener
)
```

Starts listening to this query with the given options.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html executor` | The executor to use to call the listener. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges` | Indicates whether metadata-only changes (specifically, only ` QuerySnapshot.getMetadata()` changed) should trigger snapshot events. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot> listener` | The event listener that will be called with the snapshots. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/ListenerRegistration` | A registration object that can be used to remove the listener. |

### aggregate

```
public @NonNull AggregateQuery aggregate(
    @NonNull AggregateField aggregateField,
    @NonNull AggregateField[] aggregateFields
)
```

Calculates the specified aggregations over the documents in the result set of the given query without actually downloading the documents.

Using the returned query to perform aggregations is efficient because only the final aggregation values, not the documents' data, is downloaded. The returned query can perform aggregations of the documents in cases where the result set is prohibitively large to download entirely (thousands of documents).

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/AggregateQuery` | The `AggregateQuery` that performs aggregations on the documents in the result set of this query. |

### count

```
public @NonNull AggregateQuery count()
```

Returns a query that counts the documents in the result set of this query.

The returned query, when executed, counts the documents in the result set of this query *without actually downloading the documents*.

Using the returned query to count the documents is efficient because only the final count, not the documents' data, is downloaded. The returned query can count the documents in cases where the result set is prohibitively large to download entirely (thousands of documents).

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/AggregateQuery` | The `AggregateQuery` that counts the documents in the result set of this query. |

### endAt

```
public @NonNull Query endAt(Object[] fieldValues)
```

Creates and returns a new `Query` that ends at the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query.

| Parameters |
|---|---|
| `Object[] fieldValues` | The field values to end this query at, in order of the query's order by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### endAt

```
public @NonNull Query endAt(@NonNull DocumentSnapshot snapshot)
```

Creates and returns a new `Query` that ends at the provided document (inclusive). The end position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot` | The snapshot of the document to end at. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### endBefore

```
public @NonNull Query endBefore(Object[] fieldValues)
```

Creates and returns a new `Query` that ends before the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query.

| Parameters |
|---|---|
| `Object[] fieldValues` | The field values to end this query before, in order of the query's order by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### endBefore

```
public @NonNull Query endBefore(@NonNull DocumentSnapshot snapshot)
```

Creates and returns a new `Query` that ends before the provided document (exclusive). The end position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot` | The snapshot of the document to end before. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### equals

```
public boolean equals(Object o)
```

### get

```
public @NonNull Task<QuerySnapshot> get()
```

Executes the query and returns the results as a `QuerySnapshot`.

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot>` | A Task that will be resolved with the results of the `Query`. |

### get

```
public @NonNull Task<QuerySnapshot> get(@NonNull Source source)
```

Executes the query and returns the results as a `QuerySnapshot`.

By default, `get()` attempts to provide up-to-date data when possible by waiting for data from the server, but it may return cached data or fail if you are offline and the server cannot be reached. This behavior can be altered via the `Source` parameter.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Source source` | A value to configure the get behavior. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html<https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot>` | A Task that will be resolved with the results of the `Query`. |

### getFirestore

```
public @NonNull FirebaseFirestore getFirestore()
```

Gets the Cloud Firestore instance associated with this query.

### hashCode

```
public int hashCode()
```

### limit

```
public @NonNull Query limit(long limit)
```

Creates and returns a new `Query` that only returns the first matching documents up to the specified number.

| Parameters |
|---|---|
| `long limit` | The maximum number of items to return. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### limitToLast

```
public @NonNull Query limitToLast(long limit)
```

Creates and returns a new `Query` that only returns the last matching documents up to the specified number.

You must specify at least one `orderBy` clause for `limitToLast` queries, otherwise an exception will be thrown during execution.

| Parameters |
|---|---|
| `long limit` | The maximum number of items to return. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### orderBy

```
public @NonNull Query orderBy(@NonNull String field)
```

Creates and returns a new `Query` that's additionally sorted by the specified field.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The field to sort by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### orderBy

```
public @NonNull Query orderBy(@NonNull FieldPath fieldPath)
```

Creates and returns a new `Query` that's additionally sorted by the specified field.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The field to sort by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### orderBy

```
public @NonNull Query orderBy(@NonNull String field, @NonNull Query.Direction direction)
```

Creates and returns a new `Query` that's additionally sorted by the specified field, optionally in descending order instead of ascending.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The field to sort by. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query.Direction direction` | The direction to sort. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### orderBy

```
public @NonNull Query orderBy(@NonNull FieldPath fieldPath, @NonNull Query.Direction direction)
```

Creates and returns a new `Query` that's additionally sorted by the specified field, optionally in descending order instead of ascending.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The field to sort by. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query.Direction direction` | The direction to sort. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### startAfter

```
public @NonNull Query startAfter(Object[] fieldValues)
```

Creates and returns a new `Query` that starts after the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query.

| Parameters |
|---|---|
| `Object[] fieldValues` | The field values to start this query after, in order of the query's order by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### startAfter

```
public @NonNull Query startAfter(@NonNull DocumentSnapshot snapshot)
```

Creates and returns a new `Query` that starts after the provided document (exclusive). The starting position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot` | The snapshot of the document to start after. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### startAt

```
public @NonNull Query startAt(Object[] fieldValues)
```

Creates and returns a new `Query` that starts at the provided fields relative to the order of the query. The order of the field values must match the order of the order by clauses of the query.

| Parameters |
|---|---|
| `Object[] fieldValues` | The field values to start this query at, in order of the query's order by. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### startAt

```
public @NonNull Query startAt(@NonNull DocumentSnapshot snapshot)
```

Creates and returns a new `Query` that starts at the provided document (inclusive). The starting position is relative to the order of the query. The document must contain all of the fields provided in the orderBy of this query.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot snapshot` | The snapshot of the document to start at. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### where

```
public @NonNull Query where(@NonNull Filter filter)
```

Creates and returns a new `Query` with the additional filter.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Filter filter` | The new filter to apply to the existing query. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The newly created `Query`. |

### whereArrayContains

```
public @NonNull Query whereArrayContains(@NonNull String field, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain the provided value.

A `Query` can have only one `whereArrayContains()` filter and it cannot be combined with `whereArrayContainsAny()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field containing an array to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value that must be contained in the array |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereArrayContains

```
public @NonNull Query whereArrayContains(@NonNull FieldPath fieldPath, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain the provided value.

A `Query` can have only one `whereArrayContains()` filter and it cannot be combined with `whereArrayContainsAny()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field containing an array to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value that must be contained in the array |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereArrayContainsAny

```
public @NonNull Query whereArrayContainsAny(@NonNull String field, @NonNull List<Object> values)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain at least one value from the provided list.

A `Query` can have only one `whereArrayContainsAny()` filter and it cannot be combined with `whereArrayContains()` or `whereIn()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field containing an array to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereArrayContainsAny

```
public @NonNull Query whereArrayContainsAny(
    @NonNull FieldPath fieldPath,
    @NonNull List<Object> values
)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field, the value must be an array, and that the array must contain at least one value from the provided list.

A `Query` can have only one `whereArrayContainsAny()` filter and it cannot be combined with `whereArrayContains()` or `whereIn()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field containing an array to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereEqualTo

```
public @NonNull Query whereEqualTo(@NonNull String field, @Nullable Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereEqualTo

```
public @NonNull Query whereEqualTo(@NonNull FieldPath fieldPath, @Nullable Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereGreaterThan

```
public @NonNull Query whereGreaterThan(@NonNull String field, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereGreaterThan

```
public @NonNull Query whereGreaterThan(@NonNull FieldPath fieldPath, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereGreaterThanOrEqualTo

```
public @NonNull Query whereGreaterThanOrEqualTo(@NonNull String field, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than or equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereGreaterThanOrEqualTo

```
public @NonNull Query whereGreaterThanOrEqualTo(
    @NonNull FieldPath fieldPath,
    @NonNull Object value
)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be greater than or equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereIn

```
public @NonNull Query whereIn(@NonNull String field, @NonNull List<Object> values)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value must equal one of the values from the provided list.

A `Query` can have only one `whereIn()` filter, and it cannot be combined with `whereArrayContainsAny()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereIn

```
public @NonNull Query whereIn(@NonNull FieldPath fieldPath, @NonNull List<Object> values)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value must equal one of the values from the provided list.

A `Query` can have only one `whereIn()` filter, and it cannot be combined with `whereArrayContainsAny()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereLessThan

```
public @NonNull Query whereLessThan(@NonNull String field, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereLessThan

```
public @NonNull Query whereLessThan(@NonNull FieldPath fieldPath, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereLessThanOrEqualTo

```
public @NonNull Query whereLessThanOrEqualTo(@NonNull String field, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than or equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereLessThanOrEqualTo

```
public @NonNull Query whereLessThanOrEqualTo(@NonNull FieldPath fieldPath, @NonNull Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value should be less than or equal to the specified value.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereNotEqualTo

```
public @NonNull Query whereNotEqualTo(@NonNull String field, @Nullable Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal the specified value.

A `Query` can have only one `whereNotEqualTo()` filter, and it cannot be combined with `whereNotIn()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereNotEqualTo

```
public @NonNull Query whereNotEqualTo(@NonNull FieldPath fieldPath, @Nullable Object value)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal the specified value.

A `Query` can have only one `whereNotEqualTo()` filter, and it cannot be combined with `whereNotIn()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to compare |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html https://developer.android.com/reference/kotlin/java/lang/Object.html value` | The value for comparison |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereNotIn

```
public @NonNull Query whereNotIn(@NonNull String field, @NonNull List<Object> values)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal any of the values from the provided list.

One special case is that `whereNotIn` cannot match `null` values. To query for documents where a field exists and is `null`, use `whereNotEqualTo`, which can handle this special case.

A `Query` can have only one `whereNotIn()` filter, and it cannot be combined with `whereArrayContains()`, `whereArrayContainsAny()`, `whereIn()`, or `whereNotEqualTo()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/lang/String.html field` | The name of the field to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

### whereNotIn

```
public @NonNull Query whereNotIn(@NonNull FieldPath fieldPath, @NonNull List<Object> values)
```

Creates and returns a new `Query` with the additional filter that documents must contain the specified field and the value does not equal any of the values from the provided list.

One special case is that `whereNotIn` cannot match `null` values. To query for documents where a field exists and is `null`, use `whereNotEqualTo`, which can handle this special case.

A `Query` can have only one `whereNotIn()` filter, and it cannot be combined with `whereArrayContains()`, `whereArrayContainsAny()`, `whereIn()`, or `whereNotEqualTo()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/FieldPath fieldPath` | The path of the field to search. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://developer.android.com/reference/kotlin/java/util/List.html<https://developer.android.com/reference/kotlin/java/lang/Object.html> values` | The list that contains the values to match. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query` | The created `Query`. |

## Extension functions

### FirestoreKt.dataObjects

```
public final @NonNull Flow<@NonNull List<@NonNull T>> <T extends Object> FirestoreKt.dataObjects(
    @NonNull Query receiver,
    @NonNull MetadataChanges metadataChanges
)
```

Starts listening to this query with the given options and emits its values converted to a POJO via a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html`.

- When the returned flow starts being collected, an `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener` will be attached.

- When the flow completes, the listener will be removed.

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/kotlin/java/lang/Object.html>` | The type of the object to convert to. |
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges` | controls metadata-only changes. Default: `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges#EXCLUDE` |

### FirestoreKt.snapshots

```
public final @NonNull Flow<@NonNull QuerySnapshot> FirestoreKt.snapshots(
    @NonNull Query receiver,
    @NonNull MetadataChanges metadataChanges
)
```

Starts listening to this query with the given options and emits its values via a `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html`.

- When the returned flow starts being collected, an `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/EventListener` will be attached.

- When the flow completes, the listener will be removed.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges metadataChanges` | controls metadata-only changes. Default: `https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/MetadataChanges#EXCLUDE` |