Cloud Firestore শক্তিশালী কোয়েরি কার্যকারিতা প্রদান করে যা নির্দিষ্ট করে যে আপনি কোন
ডকুমেন্ট সংগ্রহ থেকে পুনরুদ্ধার করতে চান। ডেটা
পান-এ যেমন বর্ণনা করা হয়েছে, সেই অনুযায়ী এইসব কোয়েরি get() বা addSnapshotListener()-এর সাথেও
ব্যবহার করা যেতে পারে।
ডেটা অর্ডার ও সীমিত করা
ডিফল্ট হিসেবে, কোনও কোয়েরি সেইসব ডকুমেন্ট ফিরিয়ে আনে যা ডকুমেন্ট আইডির ঊর্ধ্বক্রম অনুযায়ী
কোয়েরি পূরণ করে। আপনি
orderBy() ব্যবহার করে আপনার ডেটার জন্য ক্রমানুসারে সাজানোর সেটিং নির্দিষ্ট করতে পারেন এবং আপনি
limit() ব্যবহার করে পুনরুদ্ধার করা ডকুমেন্টের সংখ্যা সীমিত করতে পারেন। আপনি limit() উল্লেখ করলে, ভ্যালু অবশ্যই শূন্যের থেকে বেশি বা সমান
হতে হবে।
যেমন, আপনি বর্ণানুক্রমিকভাবে প্রথম ৩টি শহরের জন্য কোয়েরি করতে পারেন এর সাথে:
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
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
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Ruby
এছাড়াও, আপনি বড় থেকে ছোট ক্রমে সাজিয়ে শেষ ৩টি শহরের নাম পেতে পারেন:
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
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
Go
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
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
Go
PHP
PHP
Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
Unity
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Ruby
আপনি orderBy() ও limit()-এর সাথে where() ফিল্টার যোগ করতে পারবেন। নিম্নলিখিত
উদাহরণে, কোয়েরি জনসংখ্যার থ্রেশহোল্ড নির্ধারণ করে, জনসংখ্যার ভিত্তিতে
ছোট থেকে বড় ক্রমানুসারে সাজায় এবং থ্রেশহোল্ড অতিক্রম করা প্রথম কয়েকটি ফলাফল
দেখায়:
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
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
Go
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”);