Cloud Firestore, hangi kullanıcıların
bir koleksiyondan almak istediğiniz dokümandır. Bu sorgular ayrıca,
get()
veya addSnapshotListener()
ile birlikte,
Veriler.
Sipariş ve sınır verileri
Varsayılan olarak, bir sorgu, sorguyu karşılayan tüm dokümanları artan düzende getirir
belge kimliğine göre sıralayın. Verileriniz için sıralama düzenini şunları kullanarak belirtebilirsiniz:
orderBy()
ve alınan doküman sayısını sınırlandırmak için
limit()
. Bir limit()
belirtirseniz değer en az olmalıdır
sıfıra eşittir.
Örneğin, ilk 3 şehri alfabetik olarak şununla:
Web
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name"), limit(3));
Web
citiesRef.orderBy("name").limit(3);
Swift
citiesRef.order(by: "name").limit(to: 3)
Objective-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
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Ruby
Son 3 şehri azalan düzende de sıralayabilirsiniz:
Web
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name", "desc"), limit(3));
Web
citiesRef.orderBy("name", "desc").limit(3);
Swift
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-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
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
Query query = citiesRef.OrderByDescending("Name").Limit(3);
C#
Ruby
Birden çok alana göre de sıralama yapabilirsiniz. Örneğin, şarküterilerinize nüfusa göre, azalan düzende her eyalet sıralamasında:
Web
import { query, orderBy } from "firebase/firestore"; const q = query(citiesRef, orderBy("state"), orderBy("population", "desc"));
Web
citiesRef.orderBy("state").orderBy("population", "desc");
Swift
citiesRef .order(by: "state") .order(by: "population", descending: true)
Objective-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
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Ruby
where()
filtrelerini orderBy()
ve limit()
ile birleştirebilirsiniz.
Aşağıdaki örnekte, sorgular nüfusa göre sıralanmış bir popülasyon eşiğini tanımlar
artan düzende sıralayabilir ve yalnızca
eşik:
Web
import { query, where, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, where("population", ">", 100000), orderBy("population"), limit(2));
Web
citiesRef.where("population", ">", 100000).orderBy("population").limit(2);
Swift
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Objective-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
Go
PHP
PHP
Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.
Unity
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
C#
Ruby
Ancak aralık karşılaştırması içeren bir filtreniz varsa (<
, <=
, >
, >=
)
ilk siparişiniz aynı alanda olmalıdır; orderBy()
listesine bakın
aşağıdaki sınırlamalara tabidir.
Sınırlamalar
orderBy()
ifadeleri için aşağıdaki kısıtlamaya dikkat edin:
orderBy()
ifadesi, belirtilen alanların varlığını filtreler. Sonuç kümesi, belirtilen alanları içermeyen dokümanları içermez.
orderBy
ve varlık
Bir sorguyu belirli bir alana göre sıraladığınızda, sorgu yalnızca sipariş numarası alanının bulunduğu belgelerdir.
Örneğin, aşağıdaki sorgu
population
alanı, sorgu filtrelerini aksi takdirde karşılasa bile ayarlanmaz.
Java
db.collection("cities").whereEqualTo("country", “USA”).orderBy(“population”);
Eşitsizlikler için de benzer bir etki geçerlidir. Eşitsizlik filtresi içeren bir sorgu
o alana göre sıralama anlamına da gelir. Aşağıdakiler
sorgusu, population
alanı olmayan dokümanları bile döndürmüyor
söz konusu dokümanda country = USA
varsa . Geçici bir çözüm olarak,
her sipariş için ayrı sorgu oluşturabilir veya tüm alanlara bir değer atayabilirsiniz
yararlı olabilir.
Java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000));
Yukarıdaki sorgu, eşitsizlikle ilgili örtülü bir sıralama ölçütü içeriyor ve aşağıdakine eşdeğerdir:
Java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000)).orderBy(“population”);