Cloud Firestore ile veri siparişi verme ve verileri sınırlama

Cloud Firestore, kullanıcıların hangi ürünleri ne kadar süre kullandıkları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

Bir sorgu, varsayılan olarak 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
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
citiesRef.order(by: "name").limit(to: 3)
Objective-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
[[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
Query query = cities.orderBy("name").limit(3);
Query query = cities.orderBy("name").limitToLast(3);
Python
cities_ref = db.collection("cities")
query = cities_ref.order_by("name").limit_to_last(2)
results = query.get()

Python

cities_ref = db.collection("cities")
query = cities_ref.order_by("name").limit_to_last(2)
results = await query.get()
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
const firstThreeRes = await citiesRef.orderBy('name').limit(3).get();
Go
query := cities.OrderBy("name", firestore.Asc).Limit(3)
query := cities.OrderBy("name", firestore.Asc).LimitToLast(3)
PHP

PHP

Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.

$query = $citiesRef->orderBy('name')->limit(3);
Unity
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Query query = citiesRef.OrderBy("Name").Limit(3);
Ruby
query = cities_ref.order("name").limit(3)

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
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
[[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
Query query = cities.orderBy("name", Direction.DESCENDING).limit(3);
Python
cities_ref = db.collection("cities")
query = cities_ref.order_by("name", direction=firestore.Query.DESCENDING).limit(3)
results = query.stream()

Python

cities_ref = db.collection("cities")
query = cities_ref.order_by("name", direction=firestore.Query.DESCENDING).limit(3)
results = query.stream()
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
const lastThreeRes = await citiesRef.orderBy('name', 'desc').limit(3).get();
Go
query := cities.OrderBy("name", firestore.Desc).Limit(3)
PHP

PHP

Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.

$query = $citiesRef->orderBy('name', 'DESC')->limit(3);
Unity
Query query = citiesRef.OrderByDescending("Name").Limit(3);
C#
Query query = citiesRef.OrderByDescending("Name").Limit(3);
Ruby
query = cities_ref.order("name", "desc").limit(3)

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
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
citiesRef
  .order(by: "state")
  .order(by: "population", descending: true)
Objective-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
[[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
Query query = cities.orderBy("state").orderBy("population", Direction.DESCENDING);
Python
cities_ref = db.collection("cities")
ordered_city_ref = cities_ref.order_by("state").order_by(
    "population", direction=firestore.Query.DESCENDING
)

Python

cities_ref = db.collection("cities")
cities_ref.order_by("state").order_by(
    "population", direction=firestore.Query.DESCENDING
)
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
const byStateByPopRes = await citiesRef.orderBy('state').orderBy('population', 'desc').get();
Go
query := client.Collection("cities").OrderBy("state", firestore.Asc).OrderBy("population", firestore.Desc)
PHP

PHP

Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.

$query = $citiesRef->orderBy('state')->orderBy('population', 'DESC');
Unity
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
Ruby
query = cities_ref.order("state").order("population", "desc")

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 azalan sırada çalışır ve yalnızca boyutu aşan ilk birkaç sonucu döndürür 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
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
citiesRef
  .whereField("population", isGreaterThan: 100000)
  .order(by: "population")
  .limit(to: 2)
Objective-C
Not: Bu ürün, watchOS ve App Clip hedeflerinde kullanılamaz.
[[[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
Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population").limit(2);
Python
cities_ref = db.collection("cities")
query = (
    cities_ref.where(filter=FieldFilter("population", ">", 2500000))
    .order_by("population")
    .limit(2)
)
results = query.stream()

Python

cities_ref = db.collection("cities")
query = (
    cities_ref.where(filter=FieldFilter("population", ">", 2500000))
    .order_by("population")
    .limit(2)
)
results = query.stream()
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000))
    .OrderBy("population")
    .Limit(2);
Node.js
const biggestRes = await citiesRef.where('population', '>', 2500000)
  .orderBy('population').limit(2).get();
Go
query := cities.Where("population", ">", 2500000).OrderBy("population", firestore.Desc).Limit(2)
PHP

PHP

Cloud Firestore istemcisi yükleme ve oluşturma hakkında daha fazla bilgi için Cloud Firestore İstemci Kitaplıkları.

$query = $citiesRef
    ->where('population', '>', 2500000)
    ->orderBy('population')
    ->limit(2);
Unity
Query query = citiesRef
    .WhereGreaterThan("Population", 2500000)
    .OrderBy("Population")
    .Limit(2);
C#
Query query = citiesRef
    .WhereGreaterThan("Population", 2500000)
    .OrderBy("Population")
    .Limit(2);
Ruby
query = cities_ref.where("population", ">", 2_500_000).order("population").limit(2)

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 ve varlık

Bir sorguyu belirli bir alana göre sıraladığınızda, sorgu yalnızca başka dokümanlar da kullanabilirsiniz.

Ö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”);