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.
Verileri sipariş et ve sınırla
Varsayılan olarak bir sorgu, sorguyu karşılayan tüm belgeleri belge kimliğine göre artan sırada alır. orderBy()
kullanarak verileriniz için sıralama düzenini belirleyebilir ve limit()
öğesini kullanarak alınan belge sayısını sınırlayabilirsiniz.
Örneğin, ilk 3 şehri aşağıdakilerle alfabetik olarak sorgulayabilirsiniz:
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);
Süratli
citiesRef.order(by: "name").limit(to: 3)
Amaç-C
[[citiesRef queryOrderedByField:@"name"] queryLimitedTo:3];
Java
citiesRef.orderBy("name").limit(3);
Kotlin+KTX
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
$query = $citiesRef->orderBy('name')->limit(3);
Birlik
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Query query = citiesRef.OrderBy("Name").Limit(3);
yakut
Son 3 şehri almak için azalan düzende de sıralayabilirsiniz:
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);
Süratli
citiesRef.order(by: "name", descending: true).limit(to: 3)
Amaç-C
[[citiesRef queryOrderedByField:@"name" descending:YES] queryLimitedTo:3];
Java
citiesRef.orderBy("name", Direction.DESCENDING).limit(3);
Kotlin+KTX
citiesRef.orderBy("name", Query.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
$query = $citiesRef->orderBy('name', 'DESC')->limit(3);
Birlik
Query query = citiesRef.OrderByDescending("Name").Limit(3);
C#
Query query = citiesRef.OrderByDescending("Name").Limit(3);
yakut
Ayrıca birden fazla alana göre sipariş verebilirsiniz. Örneğin, eyalete göre ve her eyalette nüfusa göre azalan sırayla sıralamak istiyorsanız:
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");
Süratli
citiesRef .order(by: "state") .order(by: "population", descending: true)
Amaç-C
[[citiesRef queryOrderedByField:@"state"] queryOrderedByField:@"population" descending:YES];
Java
citiesRef.orderBy("state").orderBy("population", Direction.DESCENDING);
Kotlin+KTX
citiesRef.orderBy("state").orderBy("population", Query.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
$query = $citiesRef->orderBy('state')->orderBy('population', 'DESC');
Birlik
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
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 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);
Süratli
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Amaç-C
[[[citiesRef queryWhereField:@"population" isGreaterThan:@100000] queryOrderedByField:@"population"] queryLimitedTo:2];
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("population").limit(2);
Kotlin+KTX
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
$query = $citiesRef ->where('population', '>', 2500000) ->orderBy('population') ->limit(2);
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
C#
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
yakut
Ancak, aralık karşılaştırmalı bir filtreniz varsa ( <
, <=
, >
, >=
), ilk siparişiniz 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:
-
orderBy()
yan tümcesi ayrıca verilen alanların varlığını filtreler. Sonuç kümesi, verilen alanları içermeyen belgeleri içermeyecektir. Aralık karşılaştırmalı bir filtre eklerseniz (
<
,<=
,>
,>=
), ilk siparişiniz aynı alanda olmalıdır:Geçerli : Aynı alanda aralık filtresi ve
orderBy
Web 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");
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"];
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("population");
Kotlin+KTX
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
$query = $citiesRef ->where('population', '>', 2500000) ->orderBy('population');
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population");
C#
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population");
yakut
Geçersiz : Aralık filtresi ve farklı alanlarda ilk
orderBy
Web 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");
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"];
Java
citiesRef.whereGreaterThan("population", 100000).orderBy("country");
Kotlin+KTX
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
$invalidRangeQuery = $citiesRef ->where('population', '>', 2500000) ->orderBy('country');
Birlik
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Country");
C#
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Country");
yakut
- Sorgunuzu eşitlikte (
=
) veya yan tümcedein
herhangi bir alana göre sıralayamazsınız.