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”);