Cloud Firestore bietet leistungsstarke Abfragefunktionen zum Angeben, welche Dokumente Sie aus einer Sammlung abrufen möchten. Diese Abfragen können auch mit get()
oder addSnapshotListener()
verwendet werden, wie in Daten abrufen beschrieben.
Daten bestellen und limitieren
Standardmäßig ruft eine Abfrage alle Dokumente ab, die der Abfrage entsprechen, in aufsteigender Reihenfolge nach Dokument-ID. Sie können die Sortierreihenfolge Ihrer Daten mit orderBy()
und die Anzahl der abgerufenen Dokumente mit limit()
.
Beispielsweise könnten Sie alphabetisch nach den ersten 3 Städten suchen mit:
Web version 9
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name"), limit(3));
Web version 8
citiesRef.orderBy("name").limit(3);
Schnell
citiesRef.order(by: "name").limit(to: 3)
Ziel c
[[citiesRef queryOrderedByField:@"name"] queryLimitedTo:3];
Kotlin+KTX
citiesRef.orderBy("name").limit(3)
Java
citiesRef.orderBy("name").limit(3);
Dart
final citiesRef = db.collection("cities"); citiesRef.orderBy("name").limit(3);
Java
Python
Python
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Rubin
Sie können auch in absteigender Reihenfolge sortieren, um die letzten 3 Städte zu erhalten:
Web version 9
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name", "desc"), limit(3));
Web version 8
citiesRef.orderBy("name", "desc").limit(3);
Schnell
citiesRef.order(by: "name", descending: true).limit(to: 3)
Ziel c
[[citiesRef queryOrderedByField:@"name" descending:YES] queryLimitedTo:3];
Kotlin+KTX
citiesRef.orderBy("name", Query.Direction.DESCENDING).limit(3)
Java
citiesRef.orderBy("name", Direction.DESCENDING).limit(3);
Dart
final citiesRef = db.collection("cities"); citiesRef.orderBy("name", descending: true).limit(3);
Java
Python
Python
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef.OrderByDescending("Name").Limit(3);
C#
Rubin
Sie können auch nach mehreren Feldern sortieren. Wenn Sie beispielsweise nach Bundesland und innerhalb jedes Bundeslandes nach Einwohnerzahl in absteigender Reihenfolge sortieren möchten:
Web version 9
import { query, orderBy } from "firebase/firestore"; const q = query(citiesRef, orderBy("state"), orderBy("population", "desc"));
Web version 8
citiesRef.orderBy("state").orderBy("population", "desc");
Schnell
citiesRef .order(by: "state") .order(by: "population", descending: true)
Ziel c
[[citiesRef queryOrderedByField:@"state"] queryOrderedByField:@"population" descending:YES];
Kotlin+KTX
citiesRef.orderBy("state").orderBy("population", Query.Direction.DESCENDING)
Java
citiesRef.orderBy("state").orderBy("population", Direction.DESCENDING);
Dart
final citiesRef = db.collection("cities"); citiesRef.orderBy("state").orderBy("population", descending: true);
Java
Python
Python
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Rubin
Sie können where()
Filter mit orderBy()
und limit()
kombinieren. Im folgenden Beispiel definieren die Abfragen einen Populationsschwellenwert, sortieren nach Population in aufsteigender Reihenfolge und geben nur die ersten paar Ergebnisse zurück, die den Schwellenwert überschreiten:
Web version 9
import { query, where, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("population"), limit(2));
Web version 8
citiesRef.where("population", ">", 100000).orderBy("population").limit(2);
Schnell
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Ziel c
[[[citiesRef queryWhereField:@"population" isGreaterThan:@100000] queryOrderedByField:@"population"] queryLimitedTo:2];
Kotlin+KTX
citiesRef.whereGreaterThan("population", 100000).orderBy("population").limit(2)
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("population").limit(2);
Dart
final citiesRef = db.collection("cities"); citiesRef .where("population", isGreaterThan: 100000) .orderBy("population") .limit(2);
Java
Python
Python
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("population") .Limit(2);
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
C#
Rubin
Wenn Sie jedoch einen Filter mit einem Bereichsvergleich haben ( <
, <=
, >
, >=
), muss Ihre erste Sortierung auf demselben Feld erfolgen, siehe die Liste der Einschränkungen von orderBy()
weiter unten.
Einschränkungen
Beachten Sie die folgenden Einschränkungen für orderBy()
Klauseln:
- Eine
orderBy()
Klausel filtert auch nach dem Vorhandensein der angegebenen Felder. Die Ergebnismenge enthält keine Dokumente, die die angegebenen Felder nicht enthalten. Wenn Sie einen Filter mit einem Bereichsvergleich einschließen (
<
,<=
,>
,>=
), muss Ihre erste Sortierung im selben Feld erfolgen:Gültig : Bereichsfilter und
orderBy
für dasselbe FeldWeb version 9
import { query, where, orderBy } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("population"));
Web version 8
citiesRef.where("population", ">", 100000).orderBy("population");
Schnell
Hinweis: Dieses Produkt ist auf watchOS- und App Clip-Zielen nicht verfügbar.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population")
Ziel c
Hinweis: Dieses Produkt ist auf watchOS- und App Clip-Zielen nicht verfügbar.[[citiesRef queryWhereField:@"population" isGreaterThan:@100000] queryOrderedByField:@"population"];
Kotlin+KTX
citiesRef.whereGreaterThan("population", 100000).orderBy("population")
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("population");
Dart
final citiesRef = db.collection("cities"); citiesRef.where("population", isGreaterThan: 100000).orderBy("population");
Java
Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population");
Python
Python
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population");
C#
Rubin
Ungültig : Bereichsfilter und erstes
orderBy
in verschiedenen FeldernWeb version 9
import { query, where, orderBy } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("country"));
Web version 8
citiesRef.where("population", ">", 100000).orderBy("country");
Schnell
Hinweis: Dieses Produkt ist auf watchOS- und App Clip-Zielen nicht verfügbar.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "country")
Ziel c
Hinweis: Dieses Produkt ist auf watchOS- und App Clip-Zielen nicht verfügbar.[[citiesRef queryWhereField:@"population" isGreaterThan:@100000] queryOrderedByField:@"country"];
Kotlin+KTX
citiesRef.whereGreaterThan("population", 100000).orderBy("country")
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("country");
Dart
final citiesRef = db.collection("cities"); citiesRef.where("population", isGreaterThan: 100000).orderBy("country");
Java
Python
Python
C++
// BAD EXAMPLE -- will crash the program: cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("country");
Node.js
gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Country");
C#
Rubin
- Sie können Ihre Abfrage nicht nach Feldern sortieren, die in einer Gleichheitsklausel (
=
) oderin
-Klausel enthalten sind.