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+KTX
citiesRef.orderBy("name").limit(3)
Java
citiesRef.orderBy("name").limit(3);
Dart
final citiesRef = db.collection("cities"); citiesRef.orderBy("name").limit(3);
Java
Python
Python
C++
cities_ref.OrderBy("name").Limit(3);
Node.js
शुरू करें
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+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
Python
Python
C++
cities_ref.OrderBy("name", Query::Direction::kDescending).Limit(3);
Node.js
शुरू करें
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+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
Python
Python
C++
cities_ref.OrderBy("state").OrderBy("name", Query::Direction::kDescending);
Node.js
शुरू करें
PHP
PHP
Cloud Firestore क्लाइंट बनाने और इंस्टॉल करने के बारे में ज़्यादा जानकारी के लिए, यह लेख पढ़ें Cloud Firestore क्लाइंट लाइब्रेरी.
Unity
Query query = citiesRef.OrderBy("State").OrderByDescending("Population");
C#
Ruby
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
citiesRef .whereField("population", isGreaterThan: 100000) .order(by: "population") .limit(to: 2)
Objective-C
[[[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
Python
Python
C++
cities_ref.WhereGreaterThan("population", FieldValue::Integer(100000)) .OrderBy("population") .Limit(2);
Node.js
शुरू करें
PHP
PHP
Cloud Firestore क्लाइंट बनाने और इंस्टॉल करने के बारे में ज़्यादा जानकारी के लिए, यह लेख पढ़ें Cloud Firestore क्लाइंट लाइब्रेरी.
Unity
Query query = citiesRef .WhereGreaterThan("Population", 2500000) .OrderBy("Population") .Limit(2);
C#
Ruby
हालांकि, अगर आपके पास रेंज की तुलना वाला कोई फ़िल्टर है (<
, <=
, >
, >=
),
आपका पहला ऑर्डर उसी फ़ील्ड में होना चाहिए, orderBy()
की सूची देखें
जिन्हें नीचे दी गई सीमाओं के बारे में बताया गया है.
सीमाएं
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”);