ক্লাউড ফায়ারস্টোর আপনি একটি সংগ্রহ বা সংগ্রহ গোষ্ঠী থেকে কোন নথিগুলি পুনরুদ্ধার করতে চান তা নির্দিষ্ট করার জন্য শক্তিশালী ক্যোয়ারী কার্যকারিতা প্রদান করে৷ এই প্রশ্নগুলি get()
বা addSnapshotListener()
এর সাথেও ব্যবহার করা যেতে পারে, যেমন Get Data এবং Get Realtime Updates- এ বর্ণনা করা হয়েছে।
উদাহরণ ডেটা
শুরু করতে, শহরগুলি সম্পর্কে কিছু ডেটা লিখুন যাতে আমরা এটিকে আবার পড়ার বিভিন্ন উপায় দেখতে পারি:
Web version 9
import { collection, doc, setDoc } from "firebase/firestore"; const citiesRef = collection(db, "cities"); await setDoc(doc(citiesRef, "SF"), { name: "San Francisco", state: "CA", country: "USA", capital: false, population: 860000, regions: ["west_coast", "norcal"] }); await setDoc(doc(citiesRef, "LA"), { name: "Los Angeles", state: "CA", country: "USA", capital: false, population: 3900000, regions: ["west_coast", "socal"] }); await setDoc(doc(citiesRef, "DC"), { name: "Washington, D.C.", state: null, country: "USA", capital: true, population: 680000, regions: ["east_coast"] }); await setDoc(doc(citiesRef, "TOK"), { name: "Tokyo", state: null, country: "Japan", capital: true, population: 9000000, regions: ["kanto", "honshu"] }); await setDoc(doc(citiesRef, "BJ"), { name: "Beijing", state: null, country: "China", capital: true, population: 21500000, regions: ["jingjinji", "hebei"] });
Web version 8
var citiesRef = db.collection("cities"); citiesRef.doc("SF").set({ name: "San Francisco", state: "CA", country: "USA", capital: false, population: 860000, regions: ["west_coast", "norcal"] }); citiesRef.doc("LA").set({ name: "Los Angeles", state: "CA", country: "USA", capital: false, population: 3900000, regions: ["west_coast", "socal"] }); citiesRef.doc("DC").set({ name: "Washington, D.C.", state: null, country: "USA", capital: true, population: 680000, regions: ["east_coast"] }); citiesRef.doc("TOK").set({ name: "Tokyo", state: null, country: "Japan", capital: true, population: 9000000, regions: ["kanto", "honshu"] }); citiesRef.doc("BJ").set({ name: "Beijing", state: null, country: "China", capital: true, population: 21500000, regions: ["jingjinji", "hebei"] });
সুইফট
let citiesRef = db.collection("cities") citiesRef.document("SF").setData([ "name": "San Francisco", "state": "CA", "country": "USA", "capital": false, "population": 860000, "regions": ["west_coast", "norcal"] ]) citiesRef.document("LA").setData([ "name": "Los Angeles", "state": "CA", "country": "USA", "capital": false, "population": 3900000, "regions": ["west_coast", "socal"] ]) citiesRef.document("DC").setData([ "name": "Washington D.C.", "country": "USA", "capital": true, "population": 680000, "regions": ["east_coast"] ]) citiesRef.document("TOK").setData([ "name": "Tokyo", "country": "Japan", "capital": true, "population": 9000000, "regions": ["kanto", "honshu"] ]) citiesRef.document("BJ").setData([ "name": "Beijing", "country": "China", "capital": true, "population": 21500000, "regions": ["jingjinji", "hebei"] ])
উদ্দেশ্য গ
FIRCollectionReference *citiesRef = [self.db collectionWithPath:@"cities"]; [[citiesRef documentWithPath:@"SF"] setData:@{ @"name": @"San Francisco", @"state": @"CA", @"country": @"USA", @"capital": @(NO), @"population": @860000, @"regions": @[@"west_coast", @"norcal"] }]; [[citiesRef documentWithPath:@"LA"] setData:@{ @"name": @"Los Angeles", @"state": @"CA", @"country": @"USA", @"capital": @(NO), @"population": @3900000, @"regions": @[@"west_coast", @"socal"] }]; [[citiesRef documentWithPath:@"DC"] setData:@{ @"name": @"Washington D.C.", @"country": @"USA", @"capital": @(YES), @"population": @680000, @"regions": @[@"east_coast"] }]; [[citiesRef documentWithPath:@"TOK"] setData:@{ @"name": @"Tokyo", @"country": @"Japan", @"capital": @(YES), @"population": @9000000, @"regions": @[@"kanto", @"honshu"] }]; [[citiesRef documentWithPath:@"BJ"] setData:@{ @"name": @"Beijing", @"country": @"China", @"capital": @(YES), @"population": @21500000, @"regions": @[@"jingjinji", @"hebei"] }];
Kotlin+KTX
val cities = db.collection("cities") val data1 = hashMapOf( "name" to "San Francisco", "state" to "CA", "country" to "USA", "capital" to false, "population" to 860000, "regions" to listOf("west_coast", "norcal") ) cities.document("SF").set(data1) val data2 = hashMapOf( "name" to "Los Angeles", "state" to "CA", "country" to "USA", "capital" to false, "population" to 3900000, "regions" to listOf("west_coast", "socal") ) cities.document("LA").set(data2) val data3 = hashMapOf( "name" to "Washington D.C.", "state" to null, "country" to "USA", "capital" to true, "population" to 680000, "regions" to listOf("east_coast") ) cities.document("DC").set(data3) val data4 = hashMapOf( "name" to "Tokyo", "state" to null, "country" to "Japan", "capital" to true, "population" to 9000000, "regions" to listOf("kanto", "honshu") ) cities.document("TOK").set(data4) val data5 = hashMapOf( "name" to "Beijing", "state" to null, "country" to "China", "capital" to true, "population" to 21500000, "regions" to listOf("jingjinji", "hebei") ) cities.document("BJ").set(data5)
Java
CollectionReference cities = db.collection("cities"); Map<String, Object> data1 = new HashMap<>(); data1.put("name", "San Francisco"); data1.put("state", "CA"); data1.put("country", "USA"); data1.put("capital", false); data1.put("population", 860000); data1.put("regions", Arrays.asList("west_coast", "norcal")); cities.document("SF").set(data1); Map<String, Object> data2 = new HashMap<>(); data2.put("name", "Los Angeles"); data2.put("state", "CA"); data2.put("country", "USA"); data2.put("capital", false); data2.put("population", 3900000); data2.put("regions", Arrays.asList("west_coast", "socal")); cities.document("LA").set(data2); Map<String, Object> data3 = new HashMap<>(); data3.put("name", "Washington D.C."); data3.put("state", null); data3.put("country", "USA"); data3.put("capital", true); data3.put("population", 680000); data3.put("regions", Arrays.asList("east_coast")); cities.document("DC").set(data3); Map<String, Object> data4 = new HashMap<>(); data4.put("name", "Tokyo"); data4.put("state", null); data4.put("country", "Japan"); data4.put("capital", true); data4.put("population", 9000000); data4.put("regions", Arrays.asList("kanto", "honshu")); cities.document("TOK").set(data4); Map<String, Object> data5 = new HashMap<>(); data5.put("name", "Beijing"); data5.put("state", null); data5.put("country", "China"); data5.put("capital", true); data5.put("population", 21500000); data5.put("regions", Arrays.asList("jingjinji", "hebei")); cities.document("BJ").set(data5);
Dart
final cities = db.collection("cities"); final data1 = <String, dynamic>{ "name": "San Francisco", "state": "CA", "country": "USA", "capital": false, "population": 860000, "regions": ["west_coast", "norcal"] }; cities.doc("SF").set(data1); final data2 = <String, dynamic>{ "name": "Los Angeles", "state": "CA", "country": "USA", "capital": false, "population": 3900000, "regions": ["west_coast", "socal"], }; cities.doc("LA").set(data2); final data3 = <String, dynamic>{ "name": "Washington D.C.", "state": null, "country": "USA", "capital": true, "population": 680000, "regions": ["east_coast"] }; cities.doc("DC").set(data3); final data4 = <String, dynamic>{ "name": "Tokyo", "state": null, "country": "Japan", "capital": true, "population": 9000000, "regions": ["kanto", "honshu"] }; cities.doc("TOK").set(data4); final data5 = <String, dynamic>{ "name": "Beijing", "state": null, "country": "China", "capital": true, "population": 21500000, "regions": ["jingjinji", "hebei"], }; cities.doc("BJ").set(data5);
জাভা
পাইথন
class City(object): def __init__(self, name, state, country, capital=False, population=0, regions=[]): self.name = name self.state = state self.country = country self.capital = capital self.population = population self.regions = regions @staticmethod def from_dict(source): # ... def to_dict(self): # ... def __repr__(self): return ( f'City(\ name={self.name}, \ country={self.country}, \ population={self.population}, \ capital={self.capital}, \ regions={self.regions}\ )' )
cities_ref = db.collection(u'cities') cities_ref.document(u'BJ').set( City(u'Beijing', None, u'China', True, 21500000, [u'hebei']).to_dict()) cities_ref.document(u'SF').set( City(u'San Francisco', u'CA', u'USA', False, 860000, [u'west_coast', u'norcal']).to_dict()) cities_ref.document(u'LA').set( City(u'Los Angeles', u'CA', u'USA', False, 3900000, [u'west_coast', u'socal']).to_dict()) cities_ref.document(u'DC').set( City(u'Washington D.C.', None, u'USA', True, 680000, [u'east_coast']).to_dict()) cities_ref.document(u'TOK').set( City(u'Tokyo', None, u'Japan', True, 9000000, [u'kanto', u'honshu']).to_dict())
Python
class City(object): def __init__(self, name, state, country, capital=False, population=0, regions=[]): self.name = name self.state = state self.country = country self.capital = capital self.population = population self.regions = regions @staticmethod def from_dict(source): # ... def to_dict(self): # ... def __repr__(self): return f"City(\ name={self.name}, \ country={self.country}, \ population={self.population}, \ capital={self.capital}, \ regions={self.regions}\ )"
cities_ref = db.collection("cities") await cities_ref.document("BJ").set( City("Beijing", None, "China", True, 21500000, ["hebei"]).to_dict() ) await cities_ref.document("SF").set( City( "San Francisco", "CA", "USA", False, 860000, ["west_coast", "norcal"] ).to_dict() ) await cities_ref.document("LA").set( City( "Los Angeles", "CA", "USA", False, 3900000, ["west_coast", "socal"] ).to_dict() ) await cities_ref.document("DC").set( City("Washington D.C.", None, "USA", True, 680000, ["east_coast"]).to_dict() ) await cities_ref.document("TOK").set( City("Tokyo", None, "Japan", True, 9000000, ["kanto", "honshu"]).to_dict() )
সি++
CollectionReference cities = db->Collection("cities"); cities.Document("SF").Set({ {"name", FieldValue::String("San Francisco")}, {"state", FieldValue::String("CA")}, {"country", FieldValue::String("USA")}, {"capital", FieldValue::Boolean(false)}, {"population", FieldValue::Integer(860000)}, {"regions", FieldValue::Array({FieldValue::String("west_coast"), FieldValue::String("norcal")})}, }); cities.Document("LA").Set({ {"name", FieldValue::String("Los Angeles")}, {"state", FieldValue::String("CA")}, {"country", FieldValue::String("USA")}, {"capital", FieldValue::Boolean(false)}, {"population", FieldValue::Integer(3900000)}, {"regions", FieldValue::Array({FieldValue::String("west_coast"), FieldValue::String("socal")})}, }); cities.Document("DC").Set({ {"name", FieldValue::String("Washington D.C.")}, {"state", FieldValue::Null()}, {"country", FieldValue::String("USA")}, {"capital", FieldValue::Boolean(true)}, {"population", FieldValue::Integer(680000)}, {"regions", FieldValue::Array({FieldValue::String("east_coast")})}, }); cities.Document("TOK").Set({ {"name", FieldValue::String("Tokyo")}, {"state", FieldValue::Null()}, {"country", FieldValue::String("Japan")}, {"capital", FieldValue::Boolean(true)}, {"population", FieldValue::Integer(9000000)}, {"regions", FieldValue::Array({FieldValue::String("kanto"), FieldValue::String("honshu")})}, }); cities.Document("BJ").Set({ {"name", FieldValue::String("Beijing")}, {"state", FieldValue::Null()}, {"country", FieldValue::String("China")}, {"capital", FieldValue::Boolean(true)}, {"population", FieldValue::Integer(21500000)}, {"regions", FieldValue::Array({FieldValue::String("jingjinji"), FieldValue::String("hebei")})}, });
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); citiesRef.Document("SF").SetAsync(new Dictionary<string, object>(){ { "Name", "San Francisco" }, { "State", "CA" }, { "Country", "USA" }, { "Capital", false }, { "Population", 860000 }, { "Regions", new ArrayList{"west_coast", "norcal"} } }); citiesRef.Document("LA").SetAsync(new Dictionary<string, object>(){ { "Name", "Los Angeles" }, { "State", "CA" }, { "Country", "USA" }, { "Capital", false }, { "Population", 3900000 }, { "Regions", new ArrayList{"west_coast", "socal"} } }); citiesRef.Document("DC").SetAsync(new Dictionary<string, object>(){ { "Name", "Washington D.C." }, { "State", null }, { "Country", "USA" }, { "Capital", true }, { "Population", 680000 }, { "Regions", new ArrayList{"east_coast"} } }); citiesRef.Document("TOK").SetAsync(new Dictionary<string, object>(){ { "Name", "Tokyo" }, { "State", null }, { "Country", "Japan" }, { "Capital", true }, { "Population", 9000000 }, { "Regions", new ArrayList{"kanto", "honshu"} } }); citiesRef.Document("BJ").SetAsync(new Dictionary<string, object>(){ { "Name", "Beijing" }, { "State", null }, { "Country", "China" }, { "Capital", true }, { "Population", 21500000 }, { "Regions", new ArrayList{"jingjinji", "hebei"} } });
সি#
রুবি
সহজ প্রশ্ন
নিম্নলিখিত ক্যোয়ারী রাজ্য CA
সহ সমস্ত শহর ফেরত দেয়:
Web version 9
// Create a reference to the cities collection import { collection, query, where } from "firebase/firestore"; const citiesRef = collection(db, "cities"); // Create a query against the collection. const q = query(citiesRef, where("state", "==", "CA"));
Web version 8
// Create a reference to the cities collection var citiesRef = db.collection("cities"); // Create a query against the collection. var query = citiesRef.where("state", "==", "CA");
সুইফট
// Create a reference to the cities collection let citiesRef = db.collection("cities") // Create a query against the collection. let query = citiesRef.whereField("state", isEqualTo: "CA")
উদ্দেশ্য গ
// Create a reference to the cities collection FIRCollectionReference *citiesRef = [self.db collectionWithPath:@"cities"]; // Create a query against the collection. FIRQuery *query = [citiesRef queryWhereField:@"state" isEqualTo:@"CA"];
Kotlin+KTX
// Create a reference to the cities collection val citiesRef = db.collection("cities") // Create a query against the collection. val query = citiesRef.whereEqualTo("state", "CA")
Java
// Create a reference to the cities collection CollectionReference citiesRef = db.collection("cities"); // Create a query against the collection. Query query = citiesRef.whereEqualTo("state", "CA");
Dart
// Create a reference to the cities collection final citiesRef = db.collection("cities"); // Create a query against the collection. final query = citiesRef.where("state", isEqualTo: "CA");
জাভা
পাইথন
Python
সি++
CollectionReference cities_ref = db->Collection("cities"); // Create a query against the collection. Query query_ca = cities_ref.WhereEqualTo("state", FieldValue::String("CA"));
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); Query query = citiesRef.WhereEqualTo("State", "CA"); query.GetSnapshotAsync().ContinueWithOnMainThread((querySnapshotTask) => { foreach (DocumentSnapshot documentSnapshot in querySnapshotTask.Result.Documents) { Debug.Log(String.Format("Document {0} returned by query State=CA", documentSnapshot.Id)); } });
সি#
রুবি
নিম্নলিখিত ক্যোয়ারী সমস্ত রাজধানী শহর ফেরত দেয়:
Web version 9
import { collection, query, where } from "firebase/firestore"; const citiesRef = collection(db, "cities"); const q = query(citiesRef, where("capital", "==", true));
Web version 8
var citiesRef = db.collection("cities"); var query = citiesRef.where("capital", "==", true);
সুইফট
let capitalCities = db.collection("cities").whereField("capital", isEqualTo: true)
উদ্দেশ্য গ
FIRQuery *capitalCities = [[self.db collectionWithPath:@"cities"] queryWhereField:@"capital" isEqualTo:@YES];
Kotlin+KTX
val capitalCities = db.collection("cities").whereEqualTo("capital", true)
Java
Query capitalCities = db.collection("cities").whereEqualTo("capital", true);
Dart
final capitalcities = db.collection("cities").where("capital", isEqualTo: true);
জাভা
পাইথন
Python
সি++
Query capital_cities = db->Collection("cities").WhereEqualTo( "capital", FieldValue::Boolean(true));
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); Query query = citiesRef.WhereEqualTo("Capital", true); query.GetSnapshotAsync().ContinueWithOnMainThread((querySnapshotTask) => { foreach (DocumentSnapshot documentSnapshot in querySnapshotTask.Result.Documents) { Debug.Log(String.Format("Document {0} returned by query Capital=true", documentSnapshot.Id)); } });
সি#
রুবি
একটি প্রশ্ন চালান
একটি ক্যোয়ারী অবজেক্ট তৈরি করার পরে, ফলাফলগুলি পুনরুদ্ধার করতে get()
ফাংশনটি ব্যবহার করুন:
Web version 9
import { collection, query, where, getDocs } from "firebase/firestore"; const q = query(collection(db, "cities"), where("capital", "==", true)); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { // doc.data() is never undefined for query doc snapshots console.log(doc.id, " => ", doc.data()); });
Web version 8
db.collection("cities").where("capital", "==", true) .get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { // doc.data() is never undefined for query doc snapshots console.log(doc.id, " => ", doc.data()); }); }) .catch((error) => { console.log("Error getting documents: ", error); });
সুইফট
db.collection("cities").whereField("capital", isEqualTo: true) .getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } }
উদ্দেশ্য গ
[[[self.db collectionWithPath:@"cities"] queryWhereField:@"capital" isEqualTo:@(YES)] getDocumentsWithCompletion:^(FIRQuerySnapshot *snapshot, NSError *error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Kotlin+KTX
db.collection("cities") .whereEqualTo("capital", true) .get() .addOnSuccessListener { documents -> for (document in documents) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents: ", exception) }
Java
db.collection("cities") .whereEqualTo("capital", true) .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.d(TAG, "Error getting documents: ", task.getException()); } } });
Dart
db.collection("cities").where("capital", isEqualTo: true).get().then( (querySnapshot) { print("Successfully completed"); for (var docSnapshot in querySnapshot.docs) { print('${docSnapshot.id} => ${docSnapshot.data()}'); } }, onError: (e) => print("Error completing: $e"), );
জাভা
পাইথন
Python
সি++
db->Collection("cities") .WhereEqualTo("capital", FieldValue::Boolean(true)) .Get() .OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Node.js
যাওয়া
পিএইচপি
পিএইচপি
একটি ক্লাউড ফায়ারস্টোর ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, ক্লাউড ফায়ারস্টোর ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
Query capitalQuery = db.Collection("cities").WhereEqualTo("Capital", true); capitalQuery.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot capitalQuerySnapshot = task.Result; foreach (DocumentSnapshot documentSnapshot in capitalQuerySnapshot.Documents) { Debug.Log(String.Format("Document data for {0} document:", documentSnapshot.Id)); Dictionary<string, object> city = documentSnapshot.ToDictionary(); foreach (KeyValuePair<string, object> pair in city) { Debug.Log(String.Format("{0}: {1}", pair.Key, pair.Value)); } // Newline to separate entries Debug.Log(""); }; });
সি#
রুবি
ক্যোয়ারী ফলাফল পুনরুদ্ধার সম্পর্কে আরও তথ্যের জন্য ডেটা পান দেখুন। আপনি বর্তমান ফলাফল পেতে এবং ভবিষ্যতের আপডেটগুলি শুনতে একটি প্রশ্নের সাথে একজন শ্রোতাকে যুক্ত করতে পারেন৷
ক্যোয়ারী অপারেটর
where()
পদ্ধতিতে তিনটি প্যারামিটার লাগে: ফিল্টার করার জন্য একটি ক্ষেত্র, একটি তুলনা অপারেটর এবং একটি মান। ক্লাউড ফায়ারস্টোর নিম্নলিখিত তুলনা অপারেটরগুলিকে সমর্থন করে:
-
<
এর চেয়ে কম -
<=
এর চেয়ে কম বা সমান -
==
সমান -
>
এর চেয়ে বড় -
>=
এর থেকে বড় বা সমান -
!=
সমান নয় -
array-contains
-
array-contains-any
-
in
-
not-in
উদাহরণ স্বরূপ:
Web version 9
const stateQuery = query(citiesRef, where("state", "==", "CA")); const populationQuery = query(citiesRef, where("population", "<", 100000)); const nameQuery = query(citiesRef, where("name", ">=", "San Francisco"));
Web version 8
const stateQuery = citiesRef.where("state", "==", "CA"); const populationQuery = citiesRef.where("population", "<", 100000); const nameQuery = citiesRef.where("name", ">=", "San Francisco");
সুইফট
let stateQuery = citiesRef.whereField("state", isEqualTo: "CA") let populationQuery = citiesRef.whereField("population", isLessThan: 100000) let nameQuery = citiesRef.whereField("name", isGreaterThanOrEqualTo: "San Francisco")
উদ্দেশ্য গ
FIRQuery *stateQuery = [citiesRef queryWhereField:@"state" isEqualTo:@"CA"]; FIRQuery *populationQuery = [citiesRef queryWhereField:@"population" isLessThan:@100000]; FIRQuery *nameQuery = [citiesRef queryWhereField:@"name" isGreaterThanOrEqualTo:@"San Francisco"];
Kotlin+KTX
val stateQuery = citiesRef.whereEqualTo("state", "CA") val populationQuery = citiesRef.whereLessThan("population", 100000) val nameQuery = citiesRef.whereGreaterThanOrEqualTo("name", "San Francisco")
Java
Query stateQuery = citiesRef.whereEqualTo("state", "CA"); Query populationQuery = citiesRef.whereLessThan("population", 100000); Query nameQuery = citiesRef.whereGreaterThanOrEqualTo("name", "San Francisco");
Dart
final citiesRef = db.collection("cities"); final stateQuery = citiesRef.where("state", isEqualTo: "CA"); final populationQuery = citiesRef.where("population", isLessThan: 100000); final nameQuery = citiesRef.where("name", isEqualTo: "San Francisco");
জাভা
পাইথন
Python
সি++
cities_ref.WhereEqualTo("state", FieldValue::String("CA")); cities_ref.WhereLessThan("population", FieldValue::Integer(100000)); cities_ref.WhereGreaterThanOrEqualTo("name", FieldValue::String("San Francisco"));
Node.js
যাওয়া
পিএইচপি
ঐক্য
Query stateQuery = citiesRef.WhereEqualTo("State", "CA"); Query populationQuery = citiesRef.WhereGreaterThan("Population", 1000000); Query nameQuery = citiesRef.WhereGreaterThanOrEqualTo("Name", "San Francisco");
সি#
রুবি
সমান নয় ( !=
)
নট ইকুয়াল ( !=
) অপারেটর ব্যবহার করুন যেখানে প্রদত্ত ক্ষেত্রটি বিদ্যমান রয়েছে এবং তুলনা মানের সাথে মেলে না। উদাহরণ স্বরূপ:
Web version 9
const notCapitalQuery = query(citiesRef, where("capital", "!=", false));
Web version 8
citiesRef.where("capital", "!=", false);
সুইফট
let notEqualQuery = citiesRef.whereField("capital", isNotEqualTo: false)
উদ্দেশ্য গ
query = [citiesRef queryWhereField:@"capital" isNotEqualTo:@NO];
Kotlin+KTX
val notCapitalQuery = citiesRef.whereNotEqualTo("capital", false)
Java
Query notCapitalQuery = citiesRef.whereNotEqualTo("capital", false);
Dart
final citiesRef = db.collection("cities"); final notCapitals = citiesRef.where("capital", isNotEqualTo: true);
জাভা
পাইথন
// Snippet not yet available
সি++
// Snippet not yet available
Node.js
যাওয়া
// Snippet not yet available
পিএইচপি
ঐক্য
// Snippet not yet available
সি#
// Snippet not yet available
রুবি
এই ক্যোয়ারীটি প্রতিটি city
নথি প্রদান করে যেখানে capital
ফিল্ডটি false
বা null
ছাড়া অন্য একটি মান সহ বিদ্যমান। এটি city
নথিগুলি অন্তর্ভুক্ত করে যেখানে capital
ক্ষেত্র মান true
বা null
ব্যতীত অন্য কোনো নন-বুলিয়ান মানের সমান।
এই প্রশ্নটি city
নথিগুলি ফেরত দেয় না যেখানে capital
ক্ষেত্রটি বিদ্যমান নেই৷ নট-ইকুয়াল ( !=
) এবং নট- not-in
কোয়েরি নথিগুলিকে বাদ দেয় যেখানে প্রদত্ত ক্ষেত্রটি বিদ্যমান নেই ।
একটি ক্ষেত্র বিদ্যমান থাকে যখন এটি একটি খালি স্ট্রিং ( ""
), null
, এবং NaN
(কোন সংখ্যা নয়) সহ যেকোনো মানতে সেট করা থাকে। মনে রাখবেন যে null
ফিল্ডের মান মেলে না !=
ক্লজ, কারণ x != null
মূল্যায়ন করে undefined
.
সীমাবদ্ধতা
!=
প্রশ্নগুলির জন্য নিম্নলিখিত সীমাবদ্ধতাগুলি নোট করুন:
- শুধুমাত্র নথি যেখানে প্রদত্ত ক্ষেত্র বিদ্যমান আছে ক্যোয়ারী মেলে.
- আপনি একটি যৌগিক প্রশ্নে
not-in
এবং!=
একত্রিত করতে পারবেন না। - একটি যৌগিক ক্যোয়ারীতে, পরিসর (
<
,<=
,>
,>=
) এবং সমান নয় (!=
, নটnot-in
) তুলনাগুলি অবশ্যই একই ক্ষেত্রে ফিল্টার করতে হবে।
অ্যারে সদস্যপদ
আপনি অ্যারের মানগুলির উপর ভিত্তি করে ফিল্টার করতে array-contains
অপারেটর ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where("regions", "array-contains", "west_coast"));
Web version 8
citiesRef.where("regions", "array-contains", "west_coast");
সুইফট
citiesRef .whereField("regions", arrayContains: "west_coast")
উদ্দেশ্য গ
[citiesRef queryWhereField:@"state" arrayContains:@"west_coast"];
Kotlin+KTX
val citiesRef = db.collection("cities") citiesRef.whereArrayContains("regions", "west_coast")
Java
CollectionReference citiesRef = db.collection("cities"); citiesRef.whereArrayContains("regions", "west_coast");
Dart
final citiesRef = db.collection("cities"); final westCoastcities = citiesRef.where("regions", arrayContains: "west_coast");
জাভা
পাইথন
Python
সি++
CollectionReference cities_ref = db->Collection("cities"); cities_ref.WhereArrayContains("region", FieldValue::String("west_coast"));
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); Query arrayContainsQuery = citiesRef.WhereArrayContains("region", "west_coast");
সি#
রুবি
এই ক্যোয়ারীটি প্রতিটি city
নথি প্রদান করে যেখানে regions
ক্ষেত্রটি একটি অ্যারে যা west_coast
ধারণ করে। যদি অ্যারেতে আপনি যে মানের প্রশ্ন করেন তার একাধিক দৃষ্টান্ত থাকে, তাহলে নথিটি শুধুমাত্র একবার ফলাফলে অন্তর্ভুক্ত করা হয়।
আপনি প্রতি ক্যোয়ারীতে সর্বাধিক একটি array-contains
ধারা ব্যবহার করতে পারেন। আপনি array-contains
সাথে array-contains-any
any একত্রিত করতে পারবেন না।
in
, not-in
, এবং array-contains-any
লজিক্যাল OR
এর সাথে একই ক্ষেত্রে 10টি পর্যন্ত সমতা ( ==
) ক্লজ একত্রিত করতে in
অপারেটর ব্যবহার করুন। একটি in
কোয়েরি নথি প্রদান করে যেখানে প্রদত্ত ক্ষেত্রটি তুলনামূলক মানগুলির সাথে মেলে। উদাহরণ স্বরূপ:
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where('country', 'in', ['USA', 'Japan']));
Web version 8
citiesRef.where('country', 'in', ['USA', 'Japan']);
সুইফট
let citiesRef = db.collection("cities") citiesRef.whereField("country", in: ["USA", "Japan"])
উদ্দেশ্য গ
FIRCollectionReference *citiesRef = [self.db collectionWithPath:@"cities"]; [citiesRef queryWhereField:@"country" in:@[@"USA", @"Japan"]];
Kotlin+KTX
val citiesRef = db.collection("cities") citiesRef.whereIn("country", listOf("USA", "Japan"))
Java
CollectionReference citiesRef = db.collection("cities"); citiesRef.whereIn("country", Arrays.asList("USA", "Japan"));
Dart
final citiesRef = db.collection("cities"); final cities = citiesRef.where("country", whereIn: ["USA", "Japan"]);
জাভা
পাইথন
Python
সি++
CollectionReference cities_ref = db->Collection("cities"); cities_ref.WhereIn("country", std::vector<FieldValue> { FieldValue::String("USA"), FieldValue::String("Japan") });
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); ListcountriesList = new List<object>() {"USA", "Japan"}; Query whereInQuery = citiesRef.WhereIn("country", countriesList);
সি#
রুবি
এই প্রশ্নটি প্রতিটি city
নথি প্রদান করে যেখানে country
ক্ষেত্রটি USA
বা Japan
সেট করা আছে। উদাহরণের ডেটা থেকে, এতে SF
, LA
, DC
, এবং TOK
নথি অন্তর্ভুক্ত রয়েছে৷
not-in
লজিক্যাল AND
এর সাথে একই ক্ষেত্রে 10টি সমান ( !=
) ক্লজ একত্রিত করতে নট not-in
অপারেটর ব্যবহার করুন। একটি নট not-in
ক্যোয়ারী নথি প্রদান করে যেখানে প্রদত্ত ক্ষেত্রটি বিদ্যমান, null
নয় এবং তুলনামূলক মানের কোনোটির সাথে মেলে না। উদাহরণ স্বরূপ:
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where('country', 'not-in', ['USA', 'Japan']));
Web version 8
citiesRef.where('country', 'not-in', ['USA', 'Japan']);
সুইফট
citiesRef.whereField("country", notIn: ["USA", "Japan"])
উদ্দেশ্য গ
[citiesRef queryWhereField:@"country" notIn:@[@"USA", @"Japan"]];
Kotlin+KTX
citiesRef.whereNotIn("country", listOf("USA", "Japan"))
Java
citiesRef.whereNotIn("country", Arrays.asList("USA", "Japan"));
Dart
final citiesRef = db.collection("cities"); final cities = citiesRef.where("country", whereNotIn: ["USA", "Japan"]);
জাভা
পাইথন
// Snippet not yet available
সি++
cities_ref.WhereNotIn("country", std::vector<FieldValue> { FieldValue::String("USA"), FieldValue::String("Japan") });
Node.js
যাওয়া
// Snippet not yet available
পিএইচপি
ঐক্য
// Snippet not yet available
সি#
// Snippet not yet available
রুবি
এই ক্যোয়ারীটি প্রতিটি city
নথি প্রদান করে যেখানে country
ক্ষেত্রটি বিদ্যমান এবং USA
, Japan
, বা null
সেট করা নেই। উদাহরণের তথ্য থেকে, এতে London
এবং Hong Kong
নথি অন্তর্ভুক্ত রয়েছে।
নট not-in
কোয়েরি নথিগুলিকে বাদ দেয় যেখানে প্রদত্ত ক্ষেত্রটি বিদ্যমান নেই। একটি ক্ষেত্র বিদ্যমান থাকে যখন এটি একটি খালি স্ট্রিং ( ""
), null
, এবং NaN
(কোন সংখ্যা নয়) সহ যেকোনো মানতে সেট করা থাকে। উল্লেখ্য যে x != null
মূল্যায়ন করে undefined
. তুলনামূলক মানগুলির মধ্যে একটি হিসাবে null
সহ একটি নট not-in
কোয়েরি কোনো নথির সাথে মেলে না।
array-contains-any
একটি লজিক্যাল OR
এর সাথে একই ক্ষেত্রে 10টি পর্যন্ত array-contains
ধারাগুলিকে একত্রিত করতে array-contains-any
অপারেটর ব্যবহার করুন। একটি array-contains-any
কোয়েরি নথি প্রদান করে যেখানে প্রদত্ত ক্ষেত্রটি একটি অ্যারে যা এক বা একাধিক তুলনা মান ধারণ করে:
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where('regions', 'array-contains-any', ['west_coast', 'east_coast']));
Web version 8
citiesRef.where('regions', 'array-contains-any', ['west_coast', 'east_coast']);
সুইফট
let citiesRef = db.collection("cities") citiesRef.whereField("regions", arrayContainsAny: ["west_coast", "east_coast"])
উদ্দেশ্য গ
FIRCollectionReference *citiesRef = [self.db collectionWithPath:@"cities"]; [citiesRef queryWhereField:@"regions" arrayContainsAny:@[@"west_coast", @"east_coast"]];
Kotlin+KTX
val citiesRef = db.collection("cities") citiesRef.whereArrayContainsAny("regions", listOf("west_coast", "east_coast"))
Java
CollectionReference citiesRef = db.collection("cities"); citiesRef.whereArrayContainsAny("regions", Arrays.asList("west_coast", "east_coast"));
Dart
final citiesRef = db.collection("cities"); final cities = citiesRef .where("regions", arrayContainsAny: ["west_coast", "east_coast"]);
জাভা
পাইথন
Python
সি++
CollectionReference cities_ref = db->Collection("cities"); cities_ref.WhereArrayContainsAny("region", std::vector<FieldValue> { FieldValue::String("west_coast"), FieldValue::String("east_coast") });
Node.js
যাওয়া
পিএইচপি
ঐক্য
CollectionReference citiesRef = db.Collection("cities"); ListregionsList = new List<object>() {"west_coast", "east_coast"}; Query arrayContainsAnyQuery = citiesRef.WhereArrayContainsAny("regions", regionsList);
সি#
রুবি
এই ক্যোয়ারীটি প্রতিটি শহরের নথি প্রদান করে যেখানে regions
ক্ষেত্রটি একটি অ্যারে যা west_coast
বা east_coast
ধারণ করে। উদাহরণের ডেটা থেকে, এতে SF
, LA
, এবং DC
নথি অন্তর্ভুক্ত রয়েছে৷
array-contains-any
any-এর ফলাফল ডি-ডুপ করা হয়। এমনকি যদি একটি নথির অ্যারে ক্ষেত্র তুলনামূলক মানগুলির একটির বেশি মেলে, ফলাফল সেটে সেই নথিটি শুধুমাত্র একবারই অন্তর্ভুক্ত থাকে।
array-contains-any
সবসময় অ্যারের ডেটা টাইপ দ্বারা ফিল্টার করে। উদাহরণস্বরূপ, উপরের ক্যোয়ারীটি একটি শহরের নথি প্রদান করবে না যেখানে একটি অ্যারের পরিবর্তে, regions
ক্ষেত্রটি স্ট্রিং west_coast
।
আপনি in
একটি তুলনা মান হিসাবে একটি অ্যারে মান ব্যবহার করতে পারেন, কিন্তু array-contains-any
বিপরীতে, ধারাটি অ্যারের দৈর্ঘ্য, ক্রম এবং মানগুলির সঠিক মিলের জন্য মেলে। উদাহরণ স্বরূপ:
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where('regions', 'in', [['west_coast', 'east_coast']]));
Web version 8
citiesRef.where('regions', 'in', [['west_coast', 'east_coast']]);
সুইফট
citiesRef.whereField("regions", in: [["west_coast"], ["east_coast"]]);
উদ্দেশ্য গ
[citiesRef queryWhereField:@"regions" in:@[@[@"west_coast"], @[@"east_coast"]]];
Kotlin+KTX
citiesRef.whereIn("regions", listOf(arrayOf("west_coast"), arrayOf("east_coast")))
Java
citiesRef.whereIn("regions", Arrays.asList(new String[]{"west_coast"}, new String[]{"east_coast"}));
Dart
final citiesRef = db.collection("cities"); final cities = citiesRef.where("regions", whereIn: [ ["west_coast"], ["east_coast"] ]);
জাভা
পাইথন
Python
সি++
cities_ref.WhereIn("region", std::vector<FieldValue> { FieldValue::String("west_coast"), FieldValue::String("east_coast") });
Node.js
যাওয়া
পিএইচপি
ঐক্য
// Not yet supported in the Unity SDK
সি#
রুবি
এই ক্যোয়ারীটি প্রতিটি শহরের নথি প্রদান করে যেখানে regions
ক্ষেত্রটি একটি অ্যারে যা west_coast
বা east_coast
ঠিক একটি উপাদান ধারণ করে। উদাহরণের তথ্য থেকে, শুধুমাত্র DC
নথিটি তার ["east_coast"]
regions
ক্ষেত্রের সাথে যোগ্যতা অর্জন করে। SF
নথিটি অবশ্য মেলে না কারণ এর regions
ক্ষেত্র হল ["west_coast", "norcal"]
।
সীমাবদ্ধতা
in
, not-in
, এবং array-contains-any
any-এর জন্য নিম্নলিখিত সীমাবদ্ধতাগুলি নোট করুন:
-
in
,not-in
, এবংarray-contains-any
সমর্থন। - আপনি প্রতি ক্যোয়ারীতে সর্বাধিক একটি
array-contains
ধারা ব্যবহার করতে পারেন। আপনিarray-contains
সাথেarray-contains-any
any একত্রিত করতে পারবেন না। - আপনি ক্যোয়ারী প্রতি , নট
not-in
in
বাarray-contains-any
ধারা-তে সর্বাধিক একটি ব্যবহার করতে পারেন। আপনি একই প্রশ্নে এই অপারেটরগুলিকে একত্রিত করতে পারবেন না। - আপনি
not-in
সাথে not equals!=
এর সাথে একত্রিত করতে পারবেন না। - আপনি একটি সমতা (
==
) বা ধারায়in
একটি ক্ষেত্র দ্বারা আপনার ক্যোয়ারী অর্ডার করতে পারবেন না।
যৌগিক প্রশ্ন
আপনি একাধিক সমতা অপারেটর চেইন করতে পারেন ( ==
বা array-contains
করে) পদ্ধতিগুলি আরও নির্দিষ্ট প্রশ্ন তৈরি করতে (যৌক্তিক AND
)। যাইহোক, অসমতা অপারেটর, <
, <=
, >
, এবং !=
এর সাথে সমতা অপারেটরকে একত্রিত করতে আপনাকে অবশ্যই একটি যৌগিক সূচক তৈরি করতে হবে।
Web version 9
import { query, where } from "firebase/firestore"; const q1 = query(citiesRef, where("state", "==", "CO"), where("name", "==", "Denver")); const q2 = query(citiesRef, where("state", "==", "CA"), where("population", "<", 1000000));
Web version 8
const q1 = citiesRef.where("state", "==", "CO").where("name", "==", "Denver"); const q2 = citiesRef.where("state", "==", "CA").where("population", "<", 1000000);
সুইফট
citiesRef .whereField("state", isEqualTo: "CO") .whereField("name", isEqualTo: "Denver") citiesRef .whereField("state", isEqualTo: "CA") .whereField("population", isLessThan: 1000000)
উদ্দেশ্য গ
[[citiesRef queryWhereField:@"state" isEqualTo:@"CO"] queryWhereField:@"name" isGreaterThanOrEqualTo:@"Denver"]; [[citiesRef queryWhereField:@"state" isEqualTo:@"CA"] queryWhereField:@"population" isLessThan:@1000000];
Kotlin+KTX
citiesRef.whereEqualTo("state", "CO").whereEqualTo("name", "Denver") citiesRef.whereEqualTo("state", "CA").whereLessThan("population", 1000000)
Java
citiesRef.whereEqualTo("state", "CO").whereEqualTo("name", "Denver"); citiesRef.whereEqualTo("state", "CA").whereLessThan("population", 1000000);
Dart
final citiesRef = db.collection("cities"); citiesRef .where("state", isEqualTo: "CO") .where("name", isEqualTo: "Denver"); citiesRef .where("state", isEqualTo: "CA") .where("population", isLessThan: 1000000);
জাভা
পাইথন
Python
সি++
cities_ref.WhereEqualTo("state", FieldValue::String("CO")) .WhereEqualTo("name", FieldValue::String("Denver")); cities_ref.WhereEqualTo("state", FieldValue::String("CA")) .WhereLessThan("population", FieldValue::Integer(1000000));
Node.js
যাওয়া
পিএইচপি
ঐক্য
Query chainedQuery = citiesRef .WhereEqualTo("State", "CA") .WhereEqualTo("Name", "San Francisco");
সি#
রুবি
আপনি পরিসীমা ( <
, <=
, >
, >=
) সম্পাদন করতে পারেন বা শুধুমাত্র একটি একক ক্ষেত্রে ( !=
) তুলনা করতে পারেন না এবং আপনি একটি যৌগিক ক্যোয়ারীতে সর্বাধিক একটি array-contains
করে বা array-contains-any
ধারা অন্তর্ভুক্ত করতে পারেন :
বৈধ : শুধুমাত্র একটি ক্ষেত্রে পরিসীমা ফিল্টার
Web version 9
import { query, where } from "firebase/firestore"; const q1 = query(citiesRef, where("state", ">=", "CA"), where("state", "<=", "IN")); const q2 = query(citiesRef, where("state", "==", "CA"), where("population", ">", 1000000));
Web version 8
const q1 = citiesRef.where("state", ">=", "CA").where("state", "<=", "IN"); const q2 = citiesRef.where("state", "==", "CA").where("population", ">", 1000000);
সুইফট
citiesRef .whereField("state", isGreaterThanOrEqualTo: "CA") .whereField("state", isLessThanOrEqualTo: "IN") citiesRef .whereField("state", isEqualTo: "CA") .whereField("population", isGreaterThan: 1000000)
উদ্দেশ্য গ
[[citiesRef queryWhereField:@"state" isGreaterThanOrEqualTo:@"CA"] queryWhereField:@"state" isLessThanOrEqualTo:@"IN"]; [[citiesRef queryWhereField:@"state" isEqualTo:@"CA"] queryWhereField:@"population" isGreaterThan:@1000000];
Kotlin+KTX
citiesRef.whereGreaterThanOrEqualTo("state", "CA") .whereLessThanOrEqualTo("state", "IN") citiesRef.whereEqualTo("state", "CA") .whereGreaterThan("population", 1000000)
Java
citiesRef.whereGreaterThanOrEqualTo("state", "CA") .whereLessThanOrEqualTo("state", "IN"); citiesRef.whereEqualTo("state", "CA") .whereGreaterThan("population", 1000000);
Dart
final citiesRef = db.collection("cities"); citiesRef .where("state", isGreaterThanOrEqualTo: "CA") .where("state", isLessThanOrEqualTo: "IN"); citiesRef .where("state", isEqualTo: "CA") .where("population", isGreaterThan: 1000000);
জাভা
পাইথন
Python
সি++
cities_ref.WhereGreaterThanOrEqualTo("state", FieldValue::String("CA")) .WhereLessThanOrEqualTo("state", FieldValue::String("IN")); cities_ref.WhereEqualTo("state", FieldValue::String("CA")) .WhereGreaterThan("population", FieldValue::Integer(1000000));
Node.js
যাওয়া
পিএইচপি
ঐক্য
Query rangeQuery = citiesRef .WhereGreaterThanOrEqualTo("State", "CA") .WhereLessThanOrEqualTo("State", "IN");
সি#
রুবি
অবৈধ : বিভিন্ন ক্ষেত্রে পরিসীমা ফিল্টার
Web version 9
import { query, where } from "firebase/firestore"; const q = query(citiesRef, where("state", ">=", "CA"), where("population", ">", 100000));
Web version 8
citiesRef.where("state", ">=", "CA").where("population", ">", 100000);
সুইফট
citiesRef .whereField("state", isGreaterThanOrEqualTo: "CA") .whereField("population", isGreaterThan: 1000000)
উদ্দেশ্য গ
[[citiesRef queryWhereField:@"state" isGreaterThanOrEqualTo:@"CA"] queryWhereField:@"population" isGreaterThan:@1000000];
Kotlin+KTX
citiesRef.whereGreaterThanOrEqualTo("state", "CA") .whereGreaterThan("population", 100000)
Java
citiesRef.whereGreaterThanOrEqualTo("state", "CA").whereGreaterThan("population", 100000);
Dart
final citiesRef = db.collection("cities"); citiesRef .where("state", isGreaterThanOrEqualTo: "CA") .where("population", isGreaterThan: 1000000);
জাভা
পাইথন
Python
সি++
// BAD EXAMPLE -- will crash the program: cities_ref.WhereGreaterThanOrEqualTo("state", FieldValue::String("CA")) .WhereGreaterThan("population", FieldValue::Integer(100000));
Node.js
যাওয়া
পিএইচপি
ঐক্য
Query invalidRangeQuery = citiesRef .WhereGreaterThanOrEqualTo("State", "CA") .WhereGreaterThan("Population", 1000000);
সি#
রুবি
সংগ্রহ গ্রুপ প্রশ্ন
একটি সংগ্রহ গ্রুপ একই আইডি সহ সমস্ত সংগ্রহ নিয়ে গঠিত। ডিফল্টরূপে, প্রশ্নগুলি আপনার ডাটাবেসের একটি একক সংগ্রহ থেকে ফলাফল পুনরুদ্ধার করে। একক সংগ্রহের পরিবর্তে একটি সংগ্রহ গোষ্ঠী থেকে নথি পুনরুদ্ধার করতে একটি সংগ্রহ গোষ্ঠী ক্যোয়ারী ব্যবহার করুন৷
উদাহরণস্বরূপ, আপনি প্রতিটি শহরে একটি ল্যান্ডমার্ক সাব-কলেকশন যোগ করে একটি landmarks
সংগ্রহ গ্রুপ তৈরি করতে পারেন:
Web version 9
import { collection, addDoc } from "firebase/firestore"; const citiesRef = collection(db, 'cities'); await Promise.all([ addDoc(collection(citiesRef, 'SF', 'landmarks'), { name: 'Golden Gate Bridge', type: 'bridge' }), addDoc(collection(citiesRef, 'SF', 'landmarks'), { name: 'Legion of Honor', type: 'museum' }), addDoc(collection(citiesRef, 'LA', 'landmarks'), { name: 'Griffith Park', type: 'park' }), addDoc(collection(citiesRef, 'LA', 'landmarks'), { name: 'The Getty', type: 'museum' }), addDoc(collection(citiesRef, 'DC', 'landmarks'), { name: 'Lincoln Memorial', type: 'memorial' }), addDoc(collection(citiesRef, 'DC', 'landmarks'), { name: 'National Air and Space Museum', type: 'museum' }), addDoc(collection(citiesRef, 'TOK', 'landmarks'), { name: 'Ueno Park', type: 'park' }), addDoc(collection(citiesRef, 'TOK', 'landmarks'), { name: 'National Museum of Nature and Science', type: 'museum' }), addDoc(collection(citiesRef, 'BJ', 'landmarks'), { name: 'Jingshan Park', type: 'park' }), addDoc(collection(citiesRef, 'BJ', 'landmarks'), { name: 'Beijing Ancient Observatory', type: 'museum' }) ]);
Web version 8
var citiesRef = db.collection('cities'); var landmarks = Promise.all([ citiesRef.doc('SF').collection('landmarks').doc().set({ name: 'Golden Gate Bridge', type: 'bridge' }), citiesRef.doc('SF').collection('landmarks').doc().set({ name: 'Legion of Honor', type: 'museum' }), citiesRef.doc('LA').collection('landmarks').doc().set({ name: 'Griffith Park', type: 'park' }), citiesRef.doc('LA').collection('landmarks').doc().set({ name: 'The Getty', type: 'museum' }), citiesRef.doc('DC').collection('landmarks').doc().set({ name: 'Lincoln Memorial', type: 'memorial' }), citiesRef.doc('DC').collection('landmarks').doc().set({ name: 'National Air and Space Museum', type: 'museum' }), citiesRef.doc('TOK').collection('landmarks').doc().set({ name: 'Ueno Park', type: 'park' }), citiesRef.doc('TOK').collection('landmarks').doc().set({ name: 'National Museum of Nature and Science', type: 'museum' }), citiesRef.doc('BJ').collection('landmarks').doc().set({ name: 'Jingshan Park', type: 'park' }), citiesRef.doc('BJ').collection('landmarks').doc().set({ name: 'Beijing Ancient Observatory', type: 'museum' }) ]);
সুইফট
let citiesRef = db.collection("cities") var data = ["name": "Golden Gate Bridge", "type": "bridge"] citiesRef.document("SF").collection("landmarks").addDocument(data: data) data = ["name": "Legion of Honor", "type": "museum"] citiesRef.document("SF").collection("landmarks").addDocument(data: data) data = ["name": "Griffith Park", "type": "park"] citiesRef.document("LA").collection("landmarks").addDocument(data: data) data = ["name": "The Getty", "type": "museum"] citiesRef.document("LA").collection("landmarks").addDocument(data: data) data = ["name": "Lincoln Memorial", "type": "memorial"] citiesRef.document("DC").collection("landmarks").addDocument(data: data) data = ["name": "National Air and Space Museum", "type": "museum"] citiesRef.document("DC").collection("landmarks").addDocument(data: data) data = ["name": "Ueno Park", "type": "park"] citiesRef.document("TOK").collection("landmarks").addDocument(data: data) data = ["name": "National Museum of Nature and Science", "type": "museum"] citiesRef.document("TOK").collection("landmarks").addDocument(data: data) data = ["name": "Jingshan Park", "type": "park"] citiesRef.document("BJ").collection("landmarks").addDocument(data: data) data = ["name": "Beijing Ancient Observatory", "type": "museum"] citiesRef.document("BJ").collection("landmarks").addDocument(data: data)
উদ্দেশ্য গ
FIRCollectionReference *citiesRef = [self.db collectionWithPath:@"cities"]; NSDictionary *data = @{@"name": @"Golden Gate Bridge", @"type": @"bridge"}; [[[citiesRef documentWithPath:@"SF"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Legion of Honor", @"type": @"museum"}; [[[citiesRef documentWithPath:@"SF"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Griffith Park", @"type": @"park"}; [[[citiesRef documentWithPath:@"LA"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"The Getty", @"type": @"museum"}; [[[citiesRef documentWithPath:@"LA"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Lincoln Memorial", @"type": @"memorial"}; [[[citiesRef documentWithPath:@"DC"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"National Air and Space Museum", @"type": @"museum"}; [[[citiesRef documentWithPath:@"DC"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Ueno Park", @"type": @"park"}; [[[citiesRef documentWithPath:@"TOK"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"National Museum of Nature and Science", @"type": @"museum"}; [[[citiesRef documentWithPath:@"TOK"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Jingshan Park", @"type": @"park"}; [[[citiesRef documentWithPath:@"BJ"] collectionWithPath:@"landmarks"] addDocumentWithData:data]; data = @{@"name": @"Beijing Ancient Observatory", @"type": @"museum"}; [[[citiesRef documentWithPath:@"BJ"] collectionWithPath:@"landmarks"] addDocumentWithData:data];
Kotlin+KTX
val citiesRef = db.collection("cities") val ggbData = mapOf( "name" to "Golden Gate Bridge", "type" to "bridge" ) citiesRef.document("SF").collection("landmarks").add(ggbData) val lohData = mapOf( "name" to "Legion of Honor", "type" to "museum" ) citiesRef.document("SF").collection("landmarks").add(lohData) val gpData = mapOf( "name" to "Griffth Park", "type" to "park" ) citiesRef.document("LA").collection("landmarks").add(gpData) val tgData = mapOf( "name" to "The Getty", "type" to "museum" ) citiesRef.document("LA").collection("landmarks").add(tgData) val lmData = mapOf( "name" to "Lincoln Memorial", "type" to "memorial" ) citiesRef.document("DC").collection("landmarks").add(lmData) val nasaData = mapOf( "name" to "National Air and Space Museum", "type" to "museum" ) citiesRef.document("DC").collection("landmarks").add(nasaData) val upData = mapOf( "name" to "Ueno Park", "type" to "park" ) citiesRef.document("TOK").collection("landmarks").add(upData) val nmData = mapOf( "name" to "National Musuem of Nature and Science", "type" to "museum" ) citiesRef.document("TOK").collection("landmarks").add(nmData) val jpData = mapOf( "name" to "Jingshan Park", "type" to "park" ) citiesRef.document("BJ").collection("landmarks").add(jpData) val baoData = mapOf( "name" to "Beijing Ancient Observatory", "type" to "musuem" ) citiesRef.document("BJ").collection("landmarks").add(baoData)
Java
CollectionReference citiesRef = db.collection("cities"); Map<String, Object> ggbData = new HashMap<>(); ggbData.put("name", "Golden Gate Bridge"); ggbData.put("type", "bridge"); citiesRef.document("SF").collection("landmarks").add(ggbData); Map<String, Object> lohData = new HashMap<>(); lohData.put("name", "Legion of Honor"); lohData.put("type", "museum"); citiesRef.document("SF").collection("landmarks").add(lohData); Map<String, Object> gpData = new HashMap<>(); gpData.put("name", "Griffith Park"); gpData.put("type", "park"); citiesRef.document("LA").collection("landmarks").add(gpData); Map<String, Object> tgData = new HashMap<>(); tgData.put("name", "The Getty"); tgData.put("type", "museum"); citiesRef.document("LA").collection("landmarks").add(tgData); Map<String, Object> lmData = new HashMap<>(); lmData.put("name", "Lincoln Memorial"); lmData.put("type", "memorial"); citiesRef.document("DC").collection("landmarks").add(lmData); Map<String, Object> nasaData = new HashMap<>(); nasaData.put("name", "National Air and Space Museum"); nasaData.put("type", "museum"); citiesRef.document("DC").collection("landmarks").add(nasaData); Map<String, Object> upData = new HashMap<>(); upData.put("name", "Ueno Park"); upData.put("type", "park"); citiesRef.document("TOK").collection("landmarks").add(upData); Map<String, Object> nmData = new HashMap<>(); nmData.put("name", "National Museum of Nature and Science"); nmData.put("type", "museum"); citiesRef.document("TOK").collection("landmarks").add(nmData); Map<String, Object> jpData = new HashMap<>(); jpData.put("name", "Jingshan Park"); jpData.put("type", "park"); citiesRef.document("BJ").collection("landmarks").add(jpData); Map<String, Object> baoData = new HashMap<>(); baoData.put("name", "Beijing Ancient Observatory"); baoData.put("type", "museum"); citiesRef.document("BJ").collection("landmarks").add(baoData);
Dart
final citiesRef = db.collection("cities"); final ggbData = {"name": "Golden Gate Bridge", "type": "bridge"}; citiesRef.doc("SF").collection("landmarks").add(ggbData); final lohData = {"name": "Legion of Honor", "type": "museum"}; citiesRef.doc("SF").collection("landmarks").add(lohData); final gpData = {"name": "Griffth Park", "type": "park"}; citiesRef.doc("LA").collection("landmarks").add(gpData); final tgData = {"name": "The Getty", "type": "museum"}; citiesRef.doc("LA").collection("landmarks").add(tgData); final lmData = {"name": "Lincoln Memorial", "type": "memorial"}; citiesRef.doc("DC").collection("landmarks").add(lmData); final nasaData = { "name": "National Air and Space Museum", "type": "museum" }; citiesRef.doc("DC").collection("landmarks").add(nasaData); final upData = {"name": "Ueno Park", "type": "park"}; citiesRef.doc("TOK").collection("landmarks").add(upData); final nmData = { "name": "National Musuem of Nature and Science", "type": "museum" }; citiesRef.doc("TOK").collection("landmarks").add(nmData); final jpData = {"name": "Jingshan Park", "type": "park"}; citiesRef.doc("BJ").collection("landmarks").add(jpData); final baoData = {"name": "Beijing Ancient Observatory", "type": "musuem"}; citiesRef.doc("BJ").collection("landmarks").add(baoData);
জাভা
পাইথন
Python
সি++
// This is not yet supported.
Node.js
যাওয়া
পিএইচপি
ঐক্য
// Not yet supported in the Unity SDK
সি#
রুবি
আমরা একটি একক শহরের landmarks
উপ-সংগ্রহের জন্য আগে বর্ণিত সহজ এবং যৌগিক ক্যোয়ারী ব্যবহার করতে পারি, তবে আপনি প্রতিটি শহরের landmarks
উপ-সংগ্রহ থেকে একবারে ফলাফল পুনরুদ্ধার করতে চাইতে পারেন।
landmarks
সংগ্রহ গ্রুপে আইডি landmarks
সহ সমস্ত সংগ্রহ রয়েছে এবং আপনি একটি সংগ্রহ গ্রুপ ক্যোয়ারী ব্যবহার করে এটি অনুসন্ধান করতে পারেন। উদাহরণ স্বরূপ, এই সংগ্রহের গ্রুপ কোয়েরিটি সমস্ত শহর জুড়ে সমস্ত museum
ল্যান্ডমার্ক পুনরুদ্ধার করে:
Web version 9
import { collectionGroup, query, where, getDocs } from "firebase/firestore"; const museums = query(collectionGroup(db, 'landmarks'), where('type', '==', 'museum')); const querySnapshot = await getDocs(museums); querySnapshot.forEach((doc) => { console.log(doc.id, ' => ', doc.data()); });
Web version 8
var museums = db.collectionGroup('landmarks').where('type', '==', 'museum'); museums.get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(doc.id, ' => ', doc.data()); }); });
সুইফট
db.collectionGroup("landmarks").whereField("type", isEqualTo: "museum").getDocuments { (snapshot, error) in // ... }
উদ্দেশ্য গ
[[[self.db collectionGroupWithID:@"landmarks"] queryWhereField:@"type" isEqualTo:@"museum"] getDocumentsWithCompletion:^(FIRQuerySnapshot *snapshot, NSError *error) { // ... }];
Kotlin+KTX
db.collectionGroup("landmarks").whereEqualTo("type", "museum").get() .addOnSuccessListener { queryDocumentSnapshots -> // ... }
Java
db.collectionGroup("landmarks").whereEqualTo("type", "museum").get() .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { @Override public void onSuccess(QuerySnapshot queryDocumentSnapshots) { // ... } });
Dart
db .collectionGroup("landmarks") .where("type", isEqualTo: "museum") .get() .then( (res) => print("Successfully completed"), onError: (e) => print("Error completing: $e"), );
জাভা
পাইথন
Python
সি++
// This is not yet supported.
Node.js
যাওয়া
পিএইচপি
ঐক্য
// Not yet supported in the Unity SDK
সি#
রুবি
একটি সংগ্রহ গ্রুপ ক্যোয়ারী ব্যবহার করার আগে, আপনাকে অবশ্যই একটি সূচী তৈরি করতে হবে যা আপনার সংগ্রহ গোষ্ঠীর ক্যোয়ারী সমর্থন করে। আপনি একটি ত্রুটি বার্তা, কনসোল বা Firebase CLI এর মাধ্যমে একটি সূচক তৈরি করতে পারেন ।
ওয়েব এবং মোবাইল SDK-এর জন্য, আপনাকে অবশ্যই এমন নিয়মগুলি তৈরি করতে হবে যা আপনার সংগ্রহ গোষ্ঠীর প্রশ্নগুলিকে অনুমতি দেয় ৷
প্রশ্ন সীমাবদ্ধতা
নিম্নলিখিত তালিকাটি ক্লাউড ফায়ারস্টোর ক্যোয়ারী সীমাবদ্ধতাগুলিকে সংক্ষিপ্ত করে:
- Cloud Firestore যৌক্তিক
OR
প্রশ্নের জন্য সীমিত সমর্থন প্রদান করে।in
, এবংarray-contains-any
অপারেটর একটি লজিক্যালOR
সমর্থন করে 10 পর্যন্ত সমতা (==
) বাarray-contains
করে একটি একক ক্ষেত্রের শর্ত। অন্যান্য ক্ষেত্রে, প্রতিটিOR
শর্তের জন্য একটি পৃথক ক্যোয়ারী তৈরি করুন এবং আপনার অ্যাপে ক্যোয়ারী ফলাফল একত্রিত করুন। - একটি যৌগিক ক্যোয়ারীতে, পরিসর (
<
,<=
,>
,>=
) এবং সমান নয় (!=
, নটnot-in
) তুলনাগুলি অবশ্যই একই ক্ষেত্রে ফিল্টার করতে হবে। - আপনি প্রতি ক্যোয়ারীতে সর্বাধিক একটি
array-contains
ধারা ব্যবহার করতে পারেন। আপনিarray-contains
সাথেarray-contains-any
any একত্রিত করতে পারবেন না। - আপনি ক্যোয়ারী প্রতি , নট
not-in
in
বাarray-contains-any
ধারা-তে সর্বাধিক একটি ব্যবহার করতে পারেন। আপনি একই ক্যোয়ারীতে ,not-in
, এবংarray-contains-any
any-in
একত্রিত করতে পারবেন না। - আপনি একটি সমতা (
==
) বা ধারায়in
একটি ক্ষেত্র দ্বারা আপনার ক্যোয়ারী অর্ডার করতে পারবেন না। - একটি ক্যোয়ারীতে ফিল্টার, সাজানোর অর্ডার এবং মূল নথির পাথের যোগফল (একটি উপ-সংগ্রহের জন্য 1, একটি রুট সংগ্রহের জন্য 0) 100-এর বেশি হতে পারে না।
এরপর কী?
- ক্যোয়ারী ফলাফলে ডেটা অর্ডার এবং সীমাবদ্ধ করার পদ্ধতি শিখুন।
- আপনি যখন কেবল ফলাফল গণনা করতে চান তখন পড়াগুলি সংরক্ষণ করুন।