Cloud Firestore عملکرد قدرتمند پرس و جو را برای تعیین اسنادی که می خواهید از یک مجموعه بازیابی کنید فراهم می کند. این کوئری ها همچنین می توانند با get()
یا addSnapshotListener()
استفاده شوند، همانطور که در Get Data توضیح داده شده است.
سفارش و محدود کردن داده ها
به طور پیش فرض، یک پرس و جو تمام اسنادی را که پرس و جو را برآورده می کنند به ترتیب صعودی با شناسه سند بازیابی می کند. می توانید ترتیب مرتب سازی داده های خود را با استفاده از orderBy()
مشخص کنید و می توانید تعداد اسناد بازیابی شده را با استفاده از limit()
کنید.
به عنوان مثال، شما می توانید 3 شهر اول را به ترتیب حروف الفبا با استفاده از:
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);
سریع
citiesRef.order(by: "name").limit(to: 3)
هدف-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);
جاوا
پایتون
Python
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef.OrderBy("Name").Limit(3);
سی شارپ
روبی
همچنین می توانید برای دریافت 3 شهر آخر به ترتیب نزولی مرتب کنید:
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);
سریع
citiesRef.order(by: "name", descending: true).limit(to: 3)
هدف-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);
جاوا
پایتون
Python
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef.OrderByDescending("Name").Limit(3);
سی شارپ
روبی
همچنین می توانید بر اساس چندین فیلد سفارش دهید. به عنوان مثال، اگر میخواهید بر اساس ایالت و در هر ایالت به ترتیب جمعیت به ترتیب نزولی ترتیب دهید:
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");
سریع
citiesRef .order(by: "state") .order(by: "population", descending: true)
هدف-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);
جاوا
پایتون
Python
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
سی شارپ
روبی
می توانید فیلترهای Where( where()
را با orderBy()
و limit()
ترکیب کنید. در مثال زیر، پرس و جوها آستانه جمعیتی را تعریف میکنند، بر اساس جمعیت به ترتیب صعودی مرتب میشوند و تنها چند نتیجه اولی را که از آستانه فراتر میروند برمیگردانند:
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);
سریع
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
هدف-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);
جاوا
پایتون
Python
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("population") .Limit(2);
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
سی شارپ
روبی
با این حال، اگر فیلتری با مقایسه محدوده دارید ( <
، <=
، >
، >=
)، اولین سفارش شما باید در همان فیلد باشد، لیست محدودیت های orderBy()
را در زیر ببینید.
محدودیت ها
به محدودیت های زیر برای orderBy()
توجه کنید:
- یک
orderBy()
نیز وجود فیلدهای داده شده را فیلتر می کند. مجموعه نتایج شامل اسنادی که فیلدهای داده شده را ندارند، نمی شود. اگر فیلتری را با مقایسه محدوده (
<
,<=
,>
,>=
) قرار دهید، اولین سفارش شما باید در همان فیلد باشد:معتبر : فیلتر محدوده و
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");
سریع
توجه: این محصول در اهداف watchOS و App Clip موجود نیست.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population")
هدف-C
توجه: این محصول در اهداف watchOS و App Clip موجود نیست.[[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");
جاوا
Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population");
پایتون
Python
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population");
سی شارپ
روبی
نامعتبر : فیلتر محدوده و first
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");
سریع
توجه: این محصول در اهداف watchOS و App Clip موجود نیست.citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "country")
هدف-C
توجه: این محصول در اهداف watchOS و App Clip موجود نیست.[[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");
جاوا
پایتون
Python
C++
// BAD EXAMPLE -- will crash the program: cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("country");
Node.js
برو
PHP
PHP
برای اطلاعات بیشتر در مورد نصب و ایجاد کلاینت Cloud Firestore، به کتابخانه های سرویس گیرنده Cloud Firestore مراجعه کنید.
وحدت
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Country");
سی شارپ
روبی
- شما نمی توانید پرس و جو خود را با هر فیلدی که در برابری (
=
) یاin
بند قرار داده شده است، سفارش دهید.