Cloud Firestore, bir koleksiyondan hangi belgeleri almak istediğinizi belirtmek için güçlü sorgu işlevi sağlar. Bu sorgular, Get Data içinde açıklandığı gibi get()
veya addSnapshotListener()
ile de kullanılabilir.
Sipariş ve sınır verileri
Varsayılan olarak, bir sorgu, belge kimliğine göre artan sırada sorguyu karşılayan tüm belgeleri alır. orderBy()
kullanarak verileriniz için sıralama düzenini belirtebilir ve limit()
kullanarak alınan belge sayısını sınırlayabilirsiniz. Bir limit()
belirtirseniz, değer sıfırdan büyük veya sıfıra eşit olmalıdır.
Örneğin, ilk 3 şehri alfabetik olarak şu şekilde sorgulayabilirsiniz:
Web modular API
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name"), limit(3));
Web namespaced API
citiesRef.orderBy("name").limit(3);
Süratli
citiesRef.order(by: "name").limit(to: 3)
Amaç-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
Piton
Python
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Yakut
Son 3 şehri almak için azalan düzende de sıralayabilirsiniz:
Web modular API
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name", "desc"), limit(3));
Web namespaced API
citiesRef.orderBy("name", "desc").limit(3);
Süratli
citiesRef.order(by: "name", descending: true).limit(to: 3)
Amaç-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
Piton
Python
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef.OrderByDescending("Name").Limit(3);
C#
Yakut
Ayrıca birden fazla alana göre sipariş verebilirsiniz. Örneğin, eyalete göre ve her eyalet içinde nüfusa göre azalan düzende sıralamak istiyorsanız:
Web modular API
import { query, orderBy } from "firebase/firestore"; const q = query(citiesRef, orderBy("state"), orderBy("population", "desc"));
Web namespaced API
citiesRef.orderBy("state").orderBy("population", "desc");
Süratli
citiesRef .order(by: "state") .order(by: "population", descending: true)
Amaç-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
Piton
Python
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Yakut
where()
filtrelerini orderBy()
ve limit()
ile birleştirebilirsiniz. Aşağıdaki örnekte, sorgular bir popülasyon eşiği tanımlar, popülasyona göre artan düzende sıralar ve yalnızca eşiği aşan ilk birkaç sonucu döndürür:
Web modular API
import { query, where, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("population"), limit(2));
Web namespaced API
citiesRef.where("population", ">", 100000).orderBy("population").limit(2);
Süratli
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Amaç-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
Piton
Python
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("population") .Limit(2);
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
C#
Yakut
Ancak, aralık karşılaştırmalı ( <
, <=
, >
, >=
) bir filtreniz varsa, ilk sıralamanız aynı alanda olmalıdır, aşağıdaki orderBy()
sınırlamaları listesine bakın.
sınırlamalar
orderBy()
yan tümceleri için aşağıdaki kısıtlamalara dikkat edin:
- Bir
orderBy()
yan tümcesi ayrıca verilen alanların varlığını da filtreler . Sonuç kümesi, verilen alanları içermeyen belgeleri içermez. Aralık karşılaştırmalı (
<
,<=
,>
,>=
) bir filtre eklerseniz, ilk sıralamanız aynı alanda olmalıdır:Geçerli : Aralık filtresi ve aynı alanda
orderBy
Web modular API
import { query, where, orderBy } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("population"));
Web namespaced API
citiesRef.where("population", ">", 100000).orderBy("population");
Süratli
Not: Bu ürün, watchOS ve App Clip hedeflerinde mevcut değildir.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population")
Amaç-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde mevcut değildir.[[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");
Piton
Python
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population");
C#
Yakut
Geçersiz : Aralık filtresi ve farklı alanlarda ilk
orderBy
Web modular API
import { query, where, orderBy } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("country"));
Web namespaced API
citiesRef.where("population", ">", 100000).orderBy("country");
Süratli
Not: Bu ürün, watchOS ve App Clip hedeflerinde mevcut değildir.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "country")
Amaç-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde mevcut değildir.[[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
Piton
Python
C++
// BAD EXAMPLE -- will crash the program: cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("country");
Node.js
Gitmek
PHP
PHP
Cloud Firestore istemcisi kurma ve oluşturma hakkında daha fazla bilgi için Cloud Firestore Client Libraries bölümüne bakın.
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Country");
C#
Yakut
- Sorgunuzu bir eşitlik (
=
) veyain
tümcede yer alan herhangi bir alana göre sıralayamazsınız.
orderBy
ve varoluş
Bir sorguyu belirli bir alana göre sipariş ettiğinizde, sorgu yalnızca siparişe göre alanın bulunduğu belgeleri döndürebilir.
Örneğin, aşağıdaki sorgu, population
alanı ayarlanmamışsa, sorgu filtrelerini karşılasalar bile herhangi bir belge döndürmez.
java
db.collection("cities").whereEqualTo("country", “USA”).orderBy(“population”);
İlgili bir etki eşitsizlikler için geçerlidir. Bir alanda eşitsizlik filtresi olan bir sorgu, o alana göre sıralamayı da gerektirir. Aşağıdaki sorgu, o belgede country = USA
olsa bile population
alanı olmayan belgeleri döndürmez. Geçici bir çözüm olarak, her sipariş için ayrı sorgular yürütebilir veya sipariş ettiğiniz tüm alanlar için bir değer atayabilirsiniz.
java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000));
Yukarıdaki sorgu, eşitsizlik üzerinde zımni bir sıralama içerir ve aşağıdakine eşdeğerdir:
java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000)).orderBy(“population”);