Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Pesan dan batasi data dengan Cloud Firestore

Cloud Firestore menyediakan fungsionalitas kueri yang andal untuk menentukan dokumen mana yang ingin Anda ambil dari koleksi. Kueri ini juga dapat digunakan dengan get() atau addSnapshotListener() , seperti yang dijelaskan dalam Get Data .

Memesan dan membatasi data

Secara default, kueri mengambil semua dokumen yang memenuhi kueri dalam urutan menaik menurut ID dokumen. Anda dapat menentukan tata urutan untuk data Anda menggunakan orderBy() , dan Anda dapat membatasi jumlah dokumen yang diambil menggunakan limit() .

Misalnya, Anda dapat meminta 3 kota pertama menurut abjad dengan:

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);
Cepat
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
citiesRef.order(by: "name").limit(to: 3)
Objective-C
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
[[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);
Jawa
Query query = cities.orderBy("name").limit(3);
Query query = cities.orderBy("name").limitToLast(3);
Piton
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();
Pergi
query := cities.OrderBy("name", firestore.Asc).Limit(3)
query := cities.OrderBy("name", firestore.Asc).LimitToLast(3)
PHP

PHP

Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

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

Anda juga dapat mengurutkan dalam urutan menurun untuk mendapatkan 3 kota terakhir :

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);
Cepat
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-C
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
[[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);
Jawa
Query query = cities.orderBy("name", Direction.DESCENDING).limit(3);
Piton
cities_ref = db.collection(u'cities')
query = cities_ref.order_by(
    u'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();
Pergi
query := cities.OrderBy("name", firestore.Desc).Limit(3)
PHP

PHP

Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

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

Anda juga dapat mengurutkan berdasarkan beberapa bidang. Misalnya, jika Anda ingin mengurutkan berdasarkan negara bagian, dan di setiap negara bagian, urutkan berdasarkan populasi dalam urutan menurun:

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");
Cepat
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
citiesRef
    .order(by: "state")
    .order(by: "population", descending: true)
Objective-C
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
[[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);
Jawa
Query query = cities.orderBy("state").orderBy("population", Direction.DESCENDING);
Piton
cities_ref = db.collection(u'cities')
cities_ref.order_by(u'state').order_by(
    u'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();
Pergi
query := client.Collection("cities").OrderBy("state", firestore.Asc).OrderBy("population", firestore.Desc)
PHP

PHP

Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

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

Anda dapat menggabungkan filter where where() dengan orderBy() dan limit() . Dalam contoh berikut, kueri menentukan ambang populasi, mengurutkan berdasarkan populasi dalam urutan menaik, dan mengembalikan hanya beberapa hasil pertama yang melebihi ambang:

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);
Cepat
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
citiesRef
    .whereField("population", isGreaterThan: 100000)
    .order(by: "population")
    .limit(to: 2)
Objective-C
Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
[[[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);
Jawa
Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population").limit(2);
Piton
cities_ref = db.collection(u'cities')
query = cities_ref.where(
    u'population', u'>', 2500000).order_by(u'population').limit(2)
results = query.stream()

Python

cities_ref = db.collection("cities")
query = cities_ref.where("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();
Pergi
query := cities.Where("population", ">", 2500000).OrderBy("population", firestore.Desc).Limit(2)
PHP

PHP

Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

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

Namun, jika Anda memiliki filter dengan perbandingan rentang ( < , <= , > , >= ), pengurutan pertama Anda harus berada di kolom yang sama, lihat daftar batasan orderBy() di bawah.

Keterbatasan

Perhatikan batasan berikut untuk klausa orderBy() :

  • orderBy() juga memfilter keberadaan bidang yang diberikan. Kumpulan hasil tidak akan menyertakan dokumen yang tidak berisi bidang yang diberikan.
  • Jika Anda menyertakan filter dengan perbandingan rentang ( < , <= , > , >= ), pengurutan pertama Anda harus berada di bidang yang sama:

    Valid : Range filter dan orderBy pada kolom yang sama

    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");
    Cepat
    Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
    citiesRef
        .whereField("population", isGreaterThan: 100000)
        .order(by: "population")
    Objective-C
    Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
    [[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");
    Jawa
    Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population");
    Piton
    cities_ref = db.collection(u'cities')
    query = cities_ref.where(
        u'population', u'>', 2500000).order_by(u'population')
    results = query.stream()

    Python

    cities_ref = db.collection("cities")
    query = cities_ref.where("population", ">", 2500000).order_by("population")
    results = query.stream()
    Node.js
    citiesRef.where('population', '>', 2500000).orderBy('population');
    Pergi
    query := cities.Where("population", ">", 2500000).OrderBy("population", firestore.Asc)
    PHP

    PHP

    Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

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

    Tidak valid : Filter rentang dan pesanan pertama orderBy pada bidang yang berbeda

    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");
    Cepat
    Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
    citiesRef
        .whereField("population", isGreaterThan: 100000)
        .order(by: "country")
    Objective-C
    Catatan: Produk ini tidak tersedia di watchOS dan target Cuplikan Aplikasi.
    [[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");
    Jawa
    Query query = cities.whereGreaterThan("population", 2500000L).orderBy("country");
    Piton
    cities_ref = db.collection(u'cities')
    query = cities_ref.where(u'population', u'>', 2500000).order_by(u'country')
    results = query.stream()

    Python

    cities_ref = db.collection("cities")
    query = cities_ref.where("population", ">", 2500000).order_by("country")
    results = query.stream()
    C++
    // BAD EXAMPLE -- will crash the program:
    cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000))
        .OrderBy("country");
    Node.js
    citiesRef.where('population', '>', 2500000).orderBy('country');
    Pergi
    // Note: This is an invalid query. It violates the constraint that range
    // and order by are required to be on the same field.
    query := cities.Where("population", ">", 2500000).OrderBy("country", firestore.Asc)
    PHP

    PHP

    Untuk mengetahui selengkapnya tentang menginstal dan membuat klien Cloud Firestore, lihat Perpustakaan Klien Cloud Firestore .

    $invalidRangeQuery = $citiesRef
        ->where('population', '>', 2500000)
        ->orderBy('country');
    Persatuan
    Query query = citiesRef
        .WhereGreaterThan("Population", 2500000)
        .OrderBy("Country");
    C#
    Query query = citiesRef
        .WhereGreaterThan("Population", 2500000)
        .OrderBy("Country");
    Rubi
    query = cities_ref.where("population", ">", 2_500_000).order("country")
  • Anda tidak dapat mengurutkan kueri berdasarkan bidang apa pun yang disertakan dalam kesetaraan ( = ) atau in klausa.