توفّر Cloud Firestore وظائف طلب بحث فعّالة لتحديد
المستندات التي تريد استردادها من مجموعة. يمكن أيضًا استخدام طلبات البحث هذه
إما مع get()
أو addSnapshotListener()
، على النحو الموضَّح في الحصول على
البيانات:
بيانات الطلبات والحدود
يسترد الاستعلام افتراضيًا كافة المستندات التي تلبي الاستعلام تصاعديًا
حسب الطلب بمعرف المستند. يمكنك تحديد ترتيب الفرز لبياناتك باستخدام
orderBy()
، ويمكنك الحدّ من عدد المستندات التي يتم استردادها باستخدام
limit()
إذا حدّدت limit()
، يجب أن تكون القيمة أكبر من أو تساوي
إلى الصفر.
على سبيل المثال، يمكنك الاستعلام عن أول 3 مدن أبجديًا عبر:
Web
import { query, orderBy, limit } from "firebase/firestore"; const q = query(citiesRef, orderBy("name"), limit(3));
Web
citiesRef.orderBy("name").limit(3);
Swift
citiesRef.order(by: "name").limit(to: 3)
Objective-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
Python
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
Unity
Query query = citiesRef.OrderBy("Name").Limit(3);
#C
لغة Ruby
يمكنك أيضًا الترتيب تنازليًا لعرض آخر 3 مدن:
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
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-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
Python
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
Unity
Query query = citiesRef.OrderByDescending("Name").Limit(3);
#C
لغة Ruby
ويمكنك أيضًا الترتيب حسب عدة حقول. على سبيل المثال، إذا أردت الطلب حسب الولاية، وداخل كل ولاية حسب عدد السكان بترتيب تنازلي:
Web
import { query, orderBy } from "firebase/firestore"; const q = query(citiesRef, orderBy("state"), orderBy("population", "desc"));
Web
citiesRef.orderBy("state").orderBy("population", "desc");
Swift
citiesRef .order(by: "state") .order(by: "population", descending: true)
Objective-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
Python
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
Unity
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
#C
لغة Ruby
يمكنك الجمع بين where()
فلتر مع orderBy()
وlimit()
. في جلسة المعمل،
على سبيل المثال، تحدد الاستعلامات حد عدد السكان، ويتم فرزه حسب المجموعة بالكامل
بترتيب تصاعدي، وتعرض فقط النتائج القليلة الأولى التي تتجاوز
الحد:
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
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Objective-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
Python
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("population") .Limit(2);
Node.js
انتقال
PHP
PHP
لمزيد من المعلومات عن تثبيت برنامج "Cloud Firestore" وإنشائه، يمكنك الاطّلاع على مكتبات عملاء Cloud Firestore.
Unity
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
#C
لغة Ruby
ومع ذلك، إذا كان لديك فلتر بمقارنة نطاق (<
، <=
، >
، >=
)،
يجب أن يكون طلبك الأول في الحقل نفسه. اطّلِع على قائمة orderBy()
.
القيود أدناه.
القيود
لاحِظ القيد التالي لفقرات orderBy()
:
- تعمل عبارة
orderBy()
أيضًا على فلترة وجود الحقول المحدّدة. لن تتضمن مجموعة النتائج مستندات لا تحتوي على الحقول المحددة.
orderBy
والتواجد
عندما تطلب استعلامًا من خلال حقل معين، يمكن للاستعلام إرجاع المستندات التي يوجد بها حقل الترتيب حسب.
على سبيل المثال، لن يعرض الاستعلام التالي أي مستندات حيث
لم يتم ضبط الحقل population
، حتى إذا كانت تستوفي فلاتر طلبات البحث.
جافا
db.collection("cities").whereEqualTo("country", “USA”).orderBy(“population”);
ينطبق تأثير ذو صلة على المتباينات. طلب بحث يحتوي على فلتر عدم مساواة
في حقل ما يعني أيضًا الترتيب حسب هذا الحقل. ما يلي:
لا يعرض الاستعلام المستندات بدون الحقل population
حتى
إذا كانت القيمة country = USA
في هذا المستند وكحل بديل، يمكنك تنفيذ
استعلامات منفصلة لكل طلب أو يمكنك تعيين قيمة لجميع الحقول
التي تطلب بها.
جافا
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000));
يتضمن الاستعلام أعلاه ترتيبًا ضمنيًا على عدم المساواة مكافئة لما يلي:
جافا
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000)).orderBy(“population”);