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 और App Clip टारगेट पर उपलब्ध नहीं है.
citiesRef.order(by: "name").limit(to: 3)
Objective-C
ध्यान दें: यह प्रॉडक्ट WatchOS और App Clip टारगेट पर उपलब्ध नहीं है.
[[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);
Java
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();
शुरू करें
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 और App Clip टारगेट पर उपलब्ध नहीं है.
citiesRef.order(by: "name", descending: true).limit(to: 3)
Objective-C
ध्यान दें: यह प्रॉडक्ट WatchOS और App Clip टारगेट पर उपलब्ध नहीं है.
[[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);
Java
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();
शुरू करें
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 और App Clip टारगेट पर उपलब्ध नहीं है.
citiesRef
  .order(by: "state")
  .order(by: "population", descending: true)
Objective-C
ध्यान दें: यह प्रॉडक्ट WatchOS और App Clip टारगेट पर उपलब्ध नहीं है.
[[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);
Java
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();
शुरू करें
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")

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
ध्यान दें: यह प्रॉडक्ट WatchOS और App Clip टारगेट पर उपलब्ध नहीं है.
citiesRef
  .whereField("population", isGreaterThan: 100000)
  .order(by: "population")
  .limit(to: 2)
Objective-C
ध्यान दें: यह प्रॉडक्ट WatchOS और App Clip टारगेट पर उपलब्ध नहीं है.
[[[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);
Java
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();
शुरू करें
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 फ़ील्ड सेट नहीं हो, भले ही वे क्वेरी फ़िल्टर से मेल खाते हों.

Java
db.collection("cities").whereEqualTo("country", “USA”).orderBy(“population”);

संबंधित प्रभाव असमानताओं पर लागू होता है. किसी फ़ील्ड पर असमानता फ़िल्टर वाली क्वेरी का मतलब उस फ़ील्ड के मुताबिक क्रम से लगाना भी है. यहां दी गई क्वेरी, population फ़ील्ड के बिना कोई दस्तावेज़ नहीं दिखाती है, भले ही उस दस्तावेज़ में country = USA हो . इसका तरीका यह है कि आप हर ऑर्डर के लिए अलग-अलग क्वेरी लागू करें या उन सभी फ़ील्ड के लिए वैल्यू असाइन करें जिनके मुताबिक आपने ऑर्डर दिया है.

Java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000));

ऊपर दी गई क्वेरी में असमानता के बारे में अनुमानित क्रम शामिल है और यह इसके बराबर है:

Java
db.collection(“cities”).where(or(“country”, USA”), greaterThan(“population”, 250000)).orderBy(“population”);