Memfilter & Mengurutkan Data
Pelajari cara memfilter data berdasarkan kriteria tertentu dan mengurutkan hasil secara efisien menggunakan kueri Firebase.
Memfilter & Mengurutkan Data adalah pelajaran Firebase Auth & Realtime Database Apps gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Firebase Auth & Realtime Database Apps, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Firebase Auth & Realtime Database Apps mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Shape Your Realtime Data
Welcome back! In the Realtime Database, data often needs to be organized or filtered before it's useful. This lesson teaches you how to precisely shape your data.
We'll cover how to sort data using different criteria and filter it to find exactly what you need.
The Need for Precision
Imagine a list of products, users, or messages. Without filtering and ordering, you'd download everything, which is inefficient and slow.
- Filtering: Narrows down results to specific criteria (e.g., "products in stock").
- Ordering: Arranges results in a meaningful sequence (e.g., "users by name A-Z").
These operations are crucial for building responsive and data-efficient apps.
Sorting with orderBy()
Firebase Realtime Database allows you to order your data using a single orderBy method. You can order by a child key, the item's key, or its value.
orderByChild("keyName"): Sorts by the value of a specified child key.orderByKey(): Sorts by the unique keys of your data items.orderByValue(): Sorts by the values of your data items directly (if they are simple values).
orderByChild() in Action
Let's say you have a list of users, each with a "score". You can order them by their score.
Try running this example to see how the query is structured:
public class OrderByChildDemo {
public static void main(String[] args) {
System.out.println("--- Firebase Query for Users by Score ---");
System.out.println("Imagine a database path: 'users'");
System.out.println("To order users by their 'score' child:");
System.out.println(" .orderByChild(\"score\")");
System.out.println("\nThis query prepares to fetch users ordered by 'score'.");
System.out.println("Real Firebase query would look like:");
System.out.println("// Query usersByScore = databaseRef.child(\"users\")");
System.out.println("// .orderByChild(\"score\");");
}
}Pinpointing Data Filters
Once ordered, you can filter your data. These methods define the range or exact match:
equalTo(value): Finds items where the ordered child/key/value is exactlyvalue.startAt(value): Starts retrieving items fromvalueonwards.endAt(value): Stops retrieving items atvalue.
These are always used after an orderBy method.
Finding Specific Items
If you want to find all users with a specific status, equalTo() is your go-to. It's often combined with orderByChild().
Here's how you'd query for users with a "status" of "active":
public class EqualToDemo {
public static void main(String[] args) {
System.out.println("--- Firebase Query for Active Users ---");
System.out.println("Imagine a database path: 'users'");
System.out.println("To find users where 'status' is 'active':");
System.out.println(" .orderByChild(\"status\")");
System.out.println(" .equalTo(\"active\")");
System.out.println("\nThis query would fetch users with 'status' set to 'active'.");
System.out.println("Real Firebase query would look like:");
System.out.println("// Query activeUsers = databaseRef.child(\"users\")");
System.out.println("// .orderByChild(\"status\")");
System.out.println("// .equalTo(\"active\");");
}
}Data within a Range
Need data between two values? startAt() and endAt() are perfect for this. For example, finding products within a price range.
This example shows how to query for items where the "price" is between 10.0 and 50.0:
public class RangeQueryDemo {
public static void main(String[] args) {
System.out.println("--- Firebase Query for Price Range ---");
System.out.println("Imagine a database path: 'products'");
System.out.println("To find products with 'price' between 10.0 and 50.0:");
System.out.println(" .orderByChild(\"price\")");
System.out.println(" .startAt(10.0)");
System.out.println(" .endAt(50.0)");
System.out.println("\nThis query would fetch products with 'price' in the specified range.");
System.out.println("Real Firebase query would look like:");
System.out.println("// Query affordableProducts = databaseRef.child(\"products\")");
System.out.println("// .orderByChild(\"price\")");
System.out.println("// .startAt(10.0)");
System.out.println("// .endAt(50.0);");
}
}Powerful Combined Queries
The true power comes from combining orderBy() with startAt(), endAt(), or equalTo(). Remember:
- You can only use one
orderBymethod per query. - Filter methods like
startAt()must correspond to the property you're ordering by.
This ensures efficient indexing and retrieval.
Fetching Top Scores
Let's get the top 5 users with scores greater than 100. This combines ordering, a start filter, and a limit (limitToFirst() or limitToLast(), which are related to pagination but also used for filtering 'top N').
We'll order by score, start at 100, and take the first few results.
public class CombinedQueryDemo {
public static void main(String[] args) {
System.out.println("--- Firebase Query for Top Scores ---");
System.out.println("Imagine a database path: 'players'");
System.out.println("To get players with score > 100, ordered by score, limited to 5:");
System.out.println(" .orderByChild(\"score\")");
System.out.println(" .startAt(100)");
System.out.println(" .limitToFirst(5)");
System.out.println("\nThis query would fetch the first 5 players with 'score' >= 100.");
System.out.println("Real Firebase query would look like:");
System.out.println("// Query topPlayers = databaseRef.child(\"players\")");
System.out.println("// .orderByChild(\"score\")");
System.out.println("// .startAt(100)");
System.out.println("// .limitToFirst(5);");
}
}Optimizing with Indexes
For efficient ordering and filtering on child keys, you need to define indexes in your Firebase Realtime Database Security Rules.
Without indexes, Firebase will download all data and filter/order it client-side, which is slow and costly. Add ".indexOn": ["yourKey"] to your rules for frequently queried fields.
Querying Knowledge Check
Which of the following Firebase Realtime Database query methods are used to filter data based on a specific range or exact value?
Filtering & Ordering Summary
Great job! You've learned how to effectively filter and order data in Firebase Realtime Database.
- Use
orderByChild(),orderByKey(), ororderByValue()to sort. - Apply
equalTo(),startAt(), andendAt()for precise filtering. - Combine these methods for powerful, specific queries.
- Remember to add indexes for performance!
Next, we'll explore techniques for handling large datasets using pagination.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memfilter & Mengurutkan Data” gratis?
Ya — teks lengkap “Memfilter & Mengurutkan Data” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Firebase Auth & Realtime Database Apps, upgrade ke CoddyKit PRO. Kursus Firebase Auth & Realtime Database Apps mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memfilter & Mengurutkan Data”?
Pelajari cara memfilter data berdasarkan kriteria tertentu dan mengurutkan hasil secara efisien menggunakan kueri Firebase. Kamu berlatih Firebase Auth & Realtime Database Apps dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Firebase Auth & Realtime Database Apps?
Tidak diperlukan pengalaman sebelumnya. Firebase Auth & Realtime Database Apps di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Memfilter & Mengurutkan Data” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Firebase Auth & Realtime Database Apps ini?
Ya. Setiap pelajaran Firebase Auth & Realtime Database Apps menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Kueri Data Dasar
- Memfilter & Mengurutkan Data
- Teknik Paginasi Data
- Mengindeks Kueri untuk Performa