Cloud Firestore-এর মাধ্যমে ডেটা অর্ডার ও সীমিত করা

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
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
citiesRef.order(by: "name").limit(to: 3)
Objective-C
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
[[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);
জাভা
Query query = cities.orderBy("name").limit(3);
Query query = cities.orderBy("name").limitToLast(3);
Python
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();
Go
query := cities.OrderBy("name", firestore.Asc).Limit(3)
query := cities.OrderBy("name", firestore.Asc).LimitToLast(3)
PHP

PHP

Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

$query = $citiesRef->orderBy('name')->limit(3);
Unity
Query query = citiesRef.OrderBy("Name").Limit(3);
C#
Query query = citiesRef.OrderBy("Name").Limit(3);
Ruby
query = cities_ref.order("name").limit(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
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-C
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
[[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);
জাভা
Query query = cities.orderBy("name", Direction.DESCENDING).limit(3);
Python
cities_ref = db.collection("cities")
query = cities_ref.order_by("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();
Go
query := cities.OrderBy("name", firestore.Desc).Limit(3)
PHP

PHP

Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

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

এছাড়াও, আপনি একাধিক ফিল্ডের মাধ্যমে অর্ডার করতে পারবেন। যেমন, আপনি যদি রাজ্য অনুযায়ী এবং প্রতিটি রাজ্যের মধ্যে জনসংখ্যা অনুযায়ী বড় থেকে ছোট হিসেবে সাজাতে চান:

Web

import { query, orderBy } from "firebase/firestore";  

const q = query(citiesRef, orderBy("state"), orderBy("population", "desc"));

Web

citiesRef.orderBy("state").orderBy("population", "desc");
Swift
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
citiesRef
  .order(by: "state")
  .order(by: "population", descending: true)
Objective-C
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
[[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);
জাভা
Query query = cities.orderBy("state").orderBy("population", Direction.DESCENDING);
Python
cities_ref = db.collection("cities")
ordered_city_ref = cities_ref.order_by("state").order_by(
    "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();
Go
query := client.Collection("cities").OrderBy("state", firestore.Asc).OrderBy("population", firestore.Desc)
PHP

PHP

Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

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

আপনি 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
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
citiesRef
  .whereField("population", isGreaterThan: 100000)
  .order(by: "population")
  .limit(to: 2)
Objective-C
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
[[[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);
জাভা
Query query = cities.whereGreaterThan("population", 2500000L).orderBy("population").limit(2);
Python
cities_ref = db.collection("cities")
query = (
    cities_ref.where(filter=FieldFilter("population", ">", 2500000))
    .order_by("population")
    .limit(2)
)
results = query.stream()

Python

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

PHP

Cloud Firestore ক্লায়েন্ট ইনস্টল ও তৈরি করা সম্পর্কে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।

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

তবে, আপনার কাছে রেঞ্জ তুলনা (<, <=, >, >=) সহ কোনও ফিল্টার থাকলে, আপনার প্রথম অর্ডারিং একই ফিল্ডে হতে হবে, নিচে 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”);