Cloud Firestore ক্যোয়ারী কার্সারের সাহায্যে, আপনি আপনার ক্যোয়ারীতে সংজ্ঞায়িত প্যারামিটার অনুসারে একটি ক্যোয়ারী দ্বারা প্রত্যাবর্তিত ডেটাকে ব্যাচে বিভক্ত করতে পারেন।
ক্যোয়ারী কার্সার একটি প্রশ্নের জন্য শুরু এবং শেষ বিন্দু সংজ্ঞায়িত করে, আপনাকে অনুমতি দেয়:
- ডেটার একটি উপসেট ফেরত দিন।
- পেজিনেট ক্যোয়ারী ফলাফল.
যাইহোক, একটি প্রশ্নের জন্য একটি নির্দিষ্ট পরিসর সংজ্ঞায়িত করার জন্য, আপনাকে সরল প্রশ্নে বর্ণিত where()
পদ্ধতিটি ব্যবহার করা উচিত।
একটি প্রশ্নে একটি সাধারণ কার্সার যোগ করুন
একটি প্রশ্নের জন্য স্টার্ট পয়েন্ট নির্ধারণ করতে startAt()
বা startAfter()
পদ্ধতি ব্যবহার করুন। startAt()
পদ্ধতিতে স্টার্ট পয়েন্ট অন্তর্ভুক্ত থাকে, যখন startAfter()
পদ্ধতি এটিকে বাদ দেয়।
উদাহরণস্বরূপ, আপনি যদি একটি প্রশ্নে startAt(A)
ব্যবহার করেন তবে এটি সম্পূর্ণ বর্ণমালা প্রদান করে। আপনি যদি পরিবর্তে startAfter(A)
ব্যবহার করেন তবে এটি BZ
প্রদান করে।
Web
import { query, orderBy, startAt } from "firebase/firestore"; const q = query(citiesRef, orderBy("population"), startAt(1000000));
Web
citiesRef.orderBy("population").startAt(1000000);
সুইফট
// Get all cities with population over one million, ordered by population. db.collection("cities") .order(by: "population") .start(at: [1000000])
উদ্দেশ্য-C
// Get all cities with population over one million, ordered by population. [[[db collectionWithPath:@"cities"] queryOrderedByField:@"population"] queryStartingAtValues:@[ @1000000 ]];
Kotlin+KTX
// Get all cities with a population >= 1,000,000, ordered by population, db.collection("cities") .orderBy("population") .startAt(1000000)
Java
// Get all cities with a population >= 1,000,000, ordered by population, db.collection("cities") .orderBy("population") .startAt(1000000);
Dart
db.collection("cities").orderBy("population").startAt([1000000]);
জাভা
পাইথন
Python
সি++
// Get all cities with a population >= 1,000,000, ordered by population, db->Collection("cities") .OrderBy("population") .StartAt({FieldValue::Integer(1000000)});
Node.js
যাও
পিএইচপি
পিএইচপি
একটি Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
Query query = citiesRef.OrderBy("Population").StartAt(1000000);
সি#
রুবি
একইভাবে, আপনার প্রশ্নের ফলাফলের জন্য একটি শেষ বিন্দু নির্ধারণ করতে endAt()
বা endBefore()
পদ্ধতি ব্যবহার করুন।
Web
import { query, orderBy, endAt } from "firebase/firestore"; const q = query(citiesRef, orderBy("population"), endAt(1000000));
Web
citiesRef.orderBy("population").endAt(1000000);
সুইফট
// Get all cities with population less than one million, ordered by population. db.collection("cities") .order(by: "population") .end(at: [1000000])
উদ্দেশ্য-C
// Get all cities with population less than one million, ordered by population. [[[db collectionWithPath:@"cities"] queryOrderedByField:@"population"] queryEndingAtValues:@[ @1000000 ]];
Kotlin+KTX
// Get all cities with a population <= 1,000,000, ordered by population, db.collection("cities") .orderBy("population") .endAt(1000000)
Java
// Get all cities with a population <= 1,000,000, ordered by population, db.collection("cities") .orderBy("population") .endAt(1000000);
Dart
db.collection("cities").orderBy("population").endAt([1000000]);
জাভা
পাইথন
Python
সি++
// Get all cities with a population <= 1,000,000, ordered by population, db->Collection("cities") .OrderBy("population") .EndAt({FieldValue::Integer(1000000)});
Node.js
যাও
পিএইচপি
পিএইচপি
একটি Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
Query query = citiesRef.OrderBy("Population").EndAt(1000000);
সি#
রুবি
ক্যোয়ারী কার্সার নির্ধারণ করতে একটি নথির স্ন্যাপশট ব্যবহার করুন
আপনি ক্যোয়ারী কার্সারের শুরু বা শেষ বিন্দু হিসাবে কার্সার ক্লজে একটি নথির স্ন্যাপশটও পাস করতে পারেন। নথির স্ন্যাপশটের মানগুলি ক্যোয়ারী কার্সারের মান হিসাবে কাজ করে।
উদাহরণস্বরূপ, আপনার শহর এবং জনসংখ্যার ডেটা সেটে একটি "সান ফ্রান্সিসকো" নথির একটি স্ন্যাপশট নিন। তারপর, আপনার জনসংখ্যা ক্যোয়ারী কার্সারের জন্য স্টার্ট পয়েন্ট হিসাবে সেই নথির স্ন্যাপশটটি ব্যবহার করুন। আপনার প্রশ্নটি নথির স্ন্যাপশটে সংজ্ঞায়িত হিসাবে সান ফ্রান্সিসকোর চেয়ে বড় বা সমান জনসংখ্যা সহ সমস্ত শহর ফিরিয়ে দেবে।
Web
import { collection, doc, getDoc, query, orderBy, startAt } from "firebase/firestore"; const citiesRef = collection(db, "cities"); const docSnap = await getDoc(doc(citiesRef, "SF")); // Get all cities with a population bigger than San Francisco const biggerThanSf = query(citiesRef, orderBy("population"), startAt(docSnap)); // ...
Web
var citiesRef = db.collection("cities"); return citiesRef.doc("SF").get().then((doc) => { // Get all cities with a population bigger than San Francisco var biggerThanSf = citiesRef .orderBy("population") .startAt(doc); // ... });
সুইফট
db.collection("cities") .document("SF") .addSnapshotListener { (document, error) in guard let document = document else { print("Error retreving cities: \(error.debugDescription)") return } // Get all cities with a population greater than or equal to San Francisco. let sfSizeOrBigger = db.collection("cities") .order(by: "population") .start(atDocument: document) }
উদ্দেশ্য-C
[[[db collectionWithPath:@"cities"] documentWithPath:@"SF"] addSnapshotListener:^(FIRDocumentSnapshot *snapshot, NSError *error) { if (snapshot == nil) { NSLog(@"Error retreiving cities: %@", error); return; } // Get all cities with a population greater than or equal to San Francisco. FIRQuery *sfSizeOrBigger = [[[db collectionWithPath:@"cities"] queryOrderedByField:@"population"] queryStartingAtDocument:snapshot]; }];
Kotlin+KTX
// Get the data for "San Francisco" db.collection("cities").document("SF") .get() .addOnSuccessListener { documentSnapshot -> // Get all cities with a population bigger than San Francisco. val biggerThanSf = db.collection("cities") .orderBy("population") .startAt(documentSnapshot) // ... }
Java
// Get the data for "San Francisco" db.collection("cities").document("SF") .get() .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() { @Override public void onSuccess(DocumentSnapshot documentSnapshot) { // Get all cities with a population bigger than San Francisco. Query biggerThanSf = db.collection("cities") .orderBy("population") .startAt(documentSnapshot); // ... } });
Dart
db.collection("cities").doc("SF").get().then( (documentSnapshot) { final biggerThanSf = db .collection("cities") .orderBy("population") .startAtDocument(documentSnapshot); }, onError: (e) => print("Error: $e"), );
জাভা
পাইথন
Python
সি++
db->Collection("cities").Document("SF").Get().OnCompletion( [db](const Future<DocumentSnapshot>& future) { if (future.error() == Error::kErrorOk) { const DocumentSnapshot& document_snapshot = *future.result(); Query bigger_than_sf = db->Collection("cities") .OrderBy("population") .StartAt({document_snapshot}); // ... } });
Node.js
যাও
পিএইচপি
পিএইচপি
একটি Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); DocumentReference docRef = citiesRef.Document("SF"); docRef.GetSnapshotAsync().ContinueWith((snapshotTask) => { Query query = citiesRef.OrderBy("Population").StartAt(snapshotTask.Result); });
সি#
রুবি
একটি ক্যোয়ারী পেজিনেট করুন
limit()
পদ্ধতির সাথে ক্যোয়ারী কার্সারগুলিকে একত্রিত করে ক্যোয়ারী পেজিনেট করুন। উদাহরণস্বরূপ, পরবর্তী ব্যাচের জন্য একটি কার্সারের শুরু হিসাবে একটি ব্যাচের শেষ নথিটি ব্যবহার করুন।
Web
import { collection, query, orderBy, startAfter, limit, getDocs } from "firebase/firestore"; // Query the first page of docs const first = query(collection(db, "cities"), orderBy("population"), limit(25)); const documentSnapshots = await getDocs(first); // Get the last visible document const lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1]; console.log("last", lastVisible); // Construct a new query starting at this document, // get the next 25 cities. const next = query(collection(db, "cities"), orderBy("population"), startAfter(lastVisible), limit(25));
Web
var first = db.collection("cities") .orderBy("population") .limit(25); return first.get().then((documentSnapshots) => { // Get the last visible document var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1]; console.log("last", lastVisible); // Construct a new query starting at this document, // get the next 25 cities. var next = db.collection("cities") .orderBy("population") .startAfter(lastVisible) .limit(25); });
সুইফট
// Construct query for first 25 cities, ordered by population let first = db.collection("cities") .order(by: "population") .limit(to: 25) first.addSnapshotListener { (snapshot, error) in guard let snapshot = snapshot else { print("Error retreving cities: \(error.debugDescription)") return } guard let lastSnapshot = snapshot.documents.last else { // The collection is empty. return } // Construct a new query starting after this document, // retrieving the next 25 cities. let next = db.collection("cities") .order(by: "population") .start(afterDocument: lastSnapshot) // Use the query for pagination. // ... }
উদ্দেশ্য-C
FIRQuery *first = [[[db collectionWithPath:@"cities"] queryOrderedByField:@"population"] queryLimitedTo:25]; [first addSnapshotListener:^(FIRQuerySnapshot *snapshot, NSError *error) { if (snapshot == nil) { NSLog(@"Error retreiving cities: %@", error); return; } if (snapshot.documents.count == 0) { return; } FIRDocumentSnapshot *lastSnapshot = snapshot.documents.lastObject; // Construct a new query starting after this document, // retreiving the next 25 cities. FIRQuery *next = [[[db collectionWithPath:@"cities"] queryOrderedByField:@"population"] queryStartingAfterDocument:lastSnapshot]; // Use the query for pagination. // ... }];
Kotlin+KTX
// Construct query for first 25 cities, ordered by population val first = db.collection("cities") .orderBy("population") .limit(25) first.get() .addOnSuccessListener { documentSnapshots -> // ... // Get the last visible document val lastVisible = documentSnapshots.documents[documentSnapshots.size() - 1] // Construct a new query starting at this document, // get the next 25 cities. val next = db.collection("cities") .orderBy("population") .startAfter(lastVisible) .limit(25) // Use the query for pagination // ... }
Java
// Construct query for first 25 cities, ordered by population Query first = db.collection("cities") .orderBy("population") .limit(25); first.get() .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { @Override public void onSuccess(QuerySnapshot documentSnapshots) { // ... // Get the last visible document DocumentSnapshot lastVisible = documentSnapshots.getDocuments() .get(documentSnapshots.size() -1); // Construct a new query starting at this document, // get the next 25 cities. Query next = db.collection("cities") .orderBy("population") .startAfter(lastVisible) .limit(25); // Use the query for pagination // ... } });
Dart
// Construct query for first 25 cities, ordered by population final first = db.collection("cities").orderBy("population").limit(25); first.get().then( (documentSnapshots) { // Get the last visible document final lastVisible = documentSnapshots.docs[documentSnapshots.size - 1]; // Construct a new query starting at this document, // get the next 25 cities. final next = db .collection("cities") .orderBy("population") .startAfterDocument(lastVisible) .limit(25); // Use the query for pagination // ... }, onError: (e) => print("Error completing: $e"), );
জাভা
পাইথন
Python
সি++
// Construct query for first 25 cities, ordered by population Query first = db->Collection("cities").OrderBy("population").Limit(25); first.Get().OnCompletion([db](const Future<QuerySnapshot>& future) { if (future.error() != Error::kErrorOk) { // Handle error... return; } // Get the last visible document const QuerySnapshot& document_snapshots = *future.result(); std::vector<DocumentSnapshot> documents = document_snapshots.documents(); const DocumentSnapshot& last_visible = documents.back(); // Construct a new query starting at this document, // get the next 25 cities. Query next = db->Collection("cities") .OrderBy("population") .StartAfter(last_visible) .Limit(25); // Use the query for pagination // ... });
Node.js
যাও
পিএইচপি
পিএইচপি
একটি Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); Query firstQuery = citiesRef.OrderBy("Population").Limit(3); // Get the last document from the results firstQuery.GetSnapshotAsync().ContinueWith((querySnapshotTask) => { long lastPopulation = 0; foreach (DocumentSnapshot documentSnapshot in querySnapshotTask.Result.Documents) { lastPopulation = documentSnapshot.GetValue<long>("Population"); } // Construct a new query starting at this document. // Note: this will not have the desired effect if multiple cities have the exact same population value Query secondQuery = citiesRef.OrderBy("Population").StartAfter(lastPopulation); Task<QuerySnapshot> secondQuerySnapshot = secondQuery.GetSnapshotAsync();
সি#
রুবি
একাধিক ক্ষেত্রের উপর ভিত্তি করে কার্সার সেট করুন
একটি ক্ষেত্রের মানের উপর ভিত্তি করে একটি কার্সার ব্যবহার করার সময় (কোনও ডকুমেন্টস্ন্যাপশট নয়), আপনি অতিরিক্ত ক্ষেত্র যোগ করে কার্সারের অবস্থান আরও সুনির্দিষ্ট করতে পারেন। এটি বিশেষভাবে উপযোগী যদি আপনার ডেটা সেটে একাধিক ডকুমেন্ট অন্তর্ভুক্ত থাকে যেগুলির সবগুলি আপনার কার্সার ক্ষেত্রের জন্য একই মান রয়েছে, যা কার্সারের অবস্থানকে অস্পষ্ট করে তোলে। আপনি আপনার কার্সারে অতিরিক্ত ফিল্ড মান যোগ করতে পারেন আরও শুরু বা শেষ বিন্দু নির্দিষ্ট করতে এবং অস্পষ্টতা কমাতে।
উদাহরণ স্বরূপ, মার্কিন যুক্তরাষ্ট্রের "স্প্রিংফিল্ড" নামের সমস্ত শহর সমন্বিত একটি ডেটা সেটে, "স্প্রিংফিল্ড" থেকে শুরু করার জন্য একটি ক্যোয়ারী সেটের জন্য একাধিক স্টার্ট পয়েন্ট থাকবে:
শহরগুলো | |
---|---|
নাম | রাজ্য |
স্প্রিংফিল্ড | ম্যাসাচুসেটস |
স্প্রিংফিল্ড | মিসৌরি |
স্প্রিংফিল্ড | উইসকনসিন |
একটি নির্দিষ্ট স্প্রিংফিল্ডে শুরু করতে, আপনি আপনার কার্সার ক্লজে রাজ্যটিকে একটি গৌণ শর্ত হিসাবে যুক্ত করতে পারেন।
Web
// Will return all Springfields import { collection, query, orderBy, startAt } from "firebase/firestore"; const q1 = query(collection(db, "cities"), orderBy("name"), orderBy("state"), startAt("Springfield")); // Will return "Springfield, Missouri" and "Springfield, Wisconsin" const q2 = query(collection(db, "cities"), orderBy("name"), orderBy("state"), startAt("Springfield", "Missouri"));
Web
// Will return all Springfields db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield"); // Will return "Springfield, Missouri" and "Springfield, Wisconsin" db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield", "Missouri");
সুইফট
// Will return all Springfields db.collection("cities") .order(by: "name") .order(by: "state") .start(at: ["Springfield"]) // Will return "Springfield, Missouri" and "Springfield, Wisconsin" db.collection("cities") .order(by: "name") .order(by: "state") .start(at: ["Springfield", "Missouri"])
উদ্দেশ্য-C
// Will return all Springfields [[[[db collectionWithPath:@"cities"] queryOrderedByField:@"name"] queryOrderedByField:@"state"] queryStartingAtValues:@[ @"Springfield" ]]; // Will return "Springfield, Missouri" and "Springfield, Wisconsin" [[[[db collectionWithPath:@"cities"] queryOrderedByField:@"name"] queryOrderedByField:@"state"] queryStartingAtValues:@[ @"Springfield", @"Missouri" ]];
Kotlin+KTX
// Will return all Springfields db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield") // Will return "Springfield, Missouri" and "Springfield, Wisconsin" db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield", "Missouri")
Java
// Will return all Springfields db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield"); // Will return "Springfield, Missouri" and "Springfield, Wisconsin" db.collection("cities") .orderBy("name") .orderBy("state") .startAt("Springfield", "Missouri");
Dart
// Will return all Springfields db .collection("cities") .orderBy("name") .orderBy("state") .startAt(["Springfield"]); // Will return "Springfield, Missouri" and "Springfield, Wisconsin" db .collection("cities") .orderBy("name") .orderBy("state") .startAt(["Springfield", "Missouri"]);
জাভা
পাইথন
Python
সি++
// This is not yet supported.
Node.js
যাও
পিএইচপি
পিএইচপি
একটি Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
Query query1 = db.Collection("cities").OrderBy("Name").OrderBy("State").StartAt("Springfield"); Query query2 = db.Collection("cities").OrderBy("Name").OrderBy("State").StartAt("Springfield", "Missouri");