ক্লাউড ফায়ারস্টোরের সাথে ডেটা অর্ডার এবং সীমাবদ্ধ করুন

Cloud Firestore একটি সংগ্রহ থেকে কোন ডকুমেন্টগুলি পুনরুদ্ধার করতে চান তা নির্দিষ্ট করার জন্য শক্তিশালী কোয়েরি কার্যকারিতা প্রদান করে। এই কোয়েরিগুলি get() অথবা addSnapshotListener() এর সাথেও ব্যবহার করা যেতে পারে, যেমনটি Get Data তে বর্ণিত হয়েছে।

অর্ডার এবং সীমা ডেটা

ডিফল্টরূপে, একটি কোয়েরি ডকুমেন্ট আইডি অনুসারে ঊর্ধ্বমুখী ক্রমে সমস্ত ডকুমেন্ট পুনরুদ্ধার করে। আপনি 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);
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
citiesRef.order(by: "name").limit(to: 3)
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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);
পাইথন
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()
সি++
cities_ref.OrderBy("name").Limit(3);
নোড.জেএস
const firstThreeRes = await citiesRef.orderBy('name').limit(3).get();
যাও
query := cities.OrderBy("name", firestore.Asc).Limit(3)
query := cities.OrderBy("name", firestore.Asc).LimitToLast(3)
পিএইচপি

পিএইচপি

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

$query = $citiesRef->orderBy('name')->limit(3);
ঐক্য
Query query = citiesRef.OrderBy("Name").Limit(3);
সি#
Query query = citiesRef.OrderBy("Name").Limit(3);
রুবি
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);
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
citiesRef.order(by: "name", descending: true).limit(to: 3)
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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);
পাইথন
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()
সি++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
নোড.জেএস
const lastThreeRes = await citiesRef.orderBy('name', 'desc').limit(3).get();
যাও
query := cities.OrderBy("name", firestore.Desc).Limit(3)
পিএইচপি

পিএইচপি

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

$query = $citiesRef->orderBy('name', 'DESC')->limit(3);
ঐক্য
Query query = citiesRef.OrderByDescending("Name").Limit(3);
সি#
Query query = citiesRef.OrderByDescending("Name").Limit(3);
রুবি
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");
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
citiesRef
  .order(by: "state")
  .order(by: "population", descending: true)
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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);
পাইথন
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
)
সি++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
নোড.জেএস
const byStateByPopRes = await citiesRef.orderBy('state').orderBy('population', 'desc').get();
যাও
query := client.Collection("cities").OrderBy("state", firestore.Asc).OrderBy("population", firestore.Desc)
পিএইচপি

পিএইচপি

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

$query = $citiesRef->orderBy('state')->orderBy('population', 'DESC');
ঐক্য
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
সি#
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
রুবি
query = cities_ref.order("state").order("population", "desc")

আপনি 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);
সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
citiesRef
  .whereField("population", isGreaterThan: 100000)
  .order(by: "population")
  .limit(to: 2)
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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);
পাইথন
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()
সি++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000))
    .OrderBy("population")
    .Limit(2);
নোড.জেএস
const biggestRes = await citiesRef.where('population', '>', 2500000)
  .orderBy('population').limit(2).get();
যাও
query := cities.Where("population", ">", 2500000).OrderBy("population", firestore.Desc).Limit(2)
পিএইচপি

পিএইচপি

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

$query = $citiesRef
    ->where('population', '>', 2500000)
    ->orderBy('population')
    ->limit(2);
ঐক্য
Query query = citiesRef
    .WhereGreaterThan("Population", 2500000)
    .OrderBy("Population")
    .Limit(2);
সি#
Query query = citiesRef
    .WhereGreaterThan("Population", 2500000)
    .OrderBy("Population")
    .Limit(2);
রুবি
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);