এই ডকুমেন্টটিতে Cloud Firestore কীভাবে স্বতন্ত্র ডকুমেন্ট সেট, যোগ বা আপডেট করতে হয় তা ব্যাখ্যা করা হয়েছে। একসাথে অনেক ডেটা লেখার জন্য, ‘ট্রানজ্যাকশন এবং ব্যাচড রাইটস’ দেখুন।
সংক্ষিপ্ত বিবরণ
আপনি নিম্নলিখিত উপায়গুলির মধ্যে যেকোনো একটি ব্যবহার করে Cloud Firestore ডেটা লিখতে পারেন:
- একটি কালেকশনের অন্তর্গত কোনো ডকুমেন্টের ডেটা সেট করতে, ডকুমেন্ট আইডেন্টিফায়ারটি স্পষ্টভাবে উল্লেখ করুন।
- একটি সংগ্রহে নতুন ডকুমেন্ট যোগ করুন। এক্ষেত্রে, Cloud Firestore স্বয়ংক্রিয়ভাবে ডকুমেন্ট আইডেন্টিফায়ারটি তৈরি করে।
- স্বয়ংক্রিয়ভাবে তৈরি একটি শনাক্তকারীসহ একটি খালি ডকুমেন্ট তৈরি করুন এবং পরে তাতে ডেটা যুক্ত করুন।
শুরু করার আগে
ডেটা সেট, যোগ বা আপডেট করার জন্য Cloud Firestore চালু করার আগে, আপনাকে অবশ্যই নিম্নলিখিত ধাপগুলি সম্পন্ন করতে হবে:
- একটি Cloud Firestore ডেটাবেস তৈরি করুন। আরও তথ্যের জন্য, Cloud Firestore দিয়ে শুরু করুন দেখুন।
- আপনি যদি ওয়েব বা মোবাইল ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, তাহলে নিরাপত্তা বিধি দিয়ে প্রমাণীকরণ করুন। আরও তথ্যের জন্য, ‘নিরাপত্তা বিধি দিয়ে শুরু করা’ দেখুন।
- আপনি যদি সার্ভার ক্লায়েন্ট লাইব্রেরি বা REST API ব্যবহার করেন, তাহলে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) এর মাধ্যমে প্রমাণীকরণ করুন। আরও তথ্যের জন্য, সার্ভার ক্লায়েন্ট লাইব্রেরির নিরাপত্তা দেখুন।
Cloud Firestore শুরু করুন
Cloud Firestore একটি ইনস্ট্যান্স চালু করুন:
মোবাইল এবং ওয়েব এসডিকে
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
FIREBASE_CONFIGURATION পরিবর্তে আপনার ওয়েব অ্যাপের firebaseConfig ব্যবহার করুন।
ডিভাইসের সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা অক্ষুণ্ণ রাখতে, ‘অফলাইন ডেটা সক্ষম করুন’ ডকুমেন্টেশনটি দেখুন।
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
FIREBASE_CONFIGURATION পরিবর্তে আপনার ওয়েব অ্যাপের firebaseConfig ব্যবহার করুন।
ডিভাইসের সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা অক্ষুণ্ণ রাখতে, ‘অফলাইন ডেটা সক্ষম করুন’ ডকুমেন্টেশনটি দেখুন।
সুইফট
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
উদ্দেশ্য-সি
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
সি++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
ঐক্য
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
সার্ভার ক্লায়েন্ট লাইব্রেরি
জাভা
আপনার পরিবেশের উপর নির্ভর করে Cloud Firestore এসডিকে বিভিন্ন উপায়ে চালু করা হয়। নিচে সবচেয়ে প্রচলিত পদ্ধতিগুলো দেওয়া হলো। সম্পূর্ণ তথ্যের জন্য, অ্যাডমিন এসডিকে চালু করুন (Initialize the Admin SDK) দেখুন।import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
আপনার নিজের সার্ভারে Firebase Admin SDK ব্যবহার করতে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করুন।
Google Cloud কনসোলে IAM & admin > Service accounts- এ যান। একটি নতুন প্রাইভেট কী তৈরি করুন এবং JSON ফাইলটি সংরক্ষণ করুন। তারপর SDK ইনিশিয়ালাইজ করতে ফাইলটি ব্যবহার করুন:
import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use a service account InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
পাইথন
আপনার পরিবেশের উপর নির্ভর করে Cloud Firestore এসডিকে বিভিন্ন উপায়ে চালু করা হয়। নিচে সবচেয়ে প্রচলিত পদ্ধতিগুলো দেওয়া হলো। সম্পূর্ণ তথ্যের জন্য, অ্যাডমিন এসডিকে চালু করুন (Initialize the Admin SDK) দেখুন।import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
এসডিকে চালু করার জন্য বিদ্যমান অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়ালও ব্যবহার করা যেতে পারে।
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
আপনার নিজের সার্ভারে Firebase Admin SDK ব্যবহার করতে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করুন।
Google Cloud কনসোলে IAM & admin > Service accounts- এ যান। একটি নতুন প্রাইভেট কী তৈরি করুন এবং JSON ফাইলটি সংরক্ষণ করুন। তারপর SDK ইনিশিয়ালাইজ করতে ফাইলটি ব্যবহার করুন:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore.client()
Python
আপনার পরিবেশের উপর নির্ভর করে Cloud Firestore এসডিকে বিভিন্ন উপায়ে চালু করা হয়। নিচে সবচেয়ে প্রচলিত পদ্ধতিগুলো দেওয়া হলো। সম্পূর্ণ তথ্যের জন্য, অ্যাডমিন এসডিকে চালু করুন (Initialize the Admin SDK) দেখুন।import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
এসডিকে চালু করার জন্য বিদ্যমান অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়ালও ব্যবহার করা যেতে পারে।
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
আপনার নিজের সার্ভারে Firebase Admin SDK ব্যবহার করতে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করুন।
Google Cloud কনসোলে IAM & admin > Service accounts- এ যান। একটি নতুন প্রাইভেট কী তৈরি করুন এবং JSON ফাইলটি সংরক্ষণ করুন। তারপর SDK ইনিশিয়ালাইজ করতে ফাইলটি ব্যবহার করুন:
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
নোড.জেএস
আপনার পরিবেশের উপর নির্ভর করে Cloud Firestore এসডিকে বিভিন্ন উপায়ে চালু করা হয়। নিচে সবচেয়ে প্রচলিত পদ্ধতিগুলো দেওয়া হলো। সম্পূর্ণ তথ্যের জন্য, অ্যাডমিন এসডিকে চালু করুন (Initialize the Admin SDK) দেখুন।- Cloud Functions প্রারম্ভিকীকরণ করুন
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
- Google Cloud শুরু করুন
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
- আপনার নিজের সার্ভারে শুরু করুন
আপনার নিজের সার্ভারে (বা অন্য কোনো Node.js পরিবেশে) Firebase Admin SDK ব্যবহার করতে, একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করুন। Google Cloud কনসোলে IAM & admin > Service accounts- এ যান। একটি নতুন প্রাইভেট কী তৈরি করুন এবং JSON ফাইলটি সংরক্ষণ করুন। তারপর SDK ইনিশিয়ালাইজ করতে ফাইলটি ব্যবহার করুন:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
যান
আপনার পরিবেশের উপর নির্ভর করে Cloud Firestore এসডিকে বিভিন্ন উপায়ে চালু করা হয়। নিচে সবচেয়ে প্রচলিত পদ্ধতিগুলো দেওয়া হলো। সম্পূর্ণ তথ্যের জন্য, অ্যাডমিন এসডিকে চালু করুন (Initialize the Admin SDK) দেখুন।import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
আপনার নিজের সার্ভারে Firebase Admin SDK ব্যবহার করতে একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করুন।
Google Cloud কনসোলে IAM & admin > Service accounts- এ যান। একটি নতুন প্রাইভেট কী তৈরি করুন এবং JSON ফাইলটি সংরক্ষণ করুন। তারপর SDK ইনিশিয়ালাইজ করতে ফাইলটি ব্যবহার করুন:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
সি#
সি#
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
রুবি
একটি নথি সেট করুন
একটিমাত্র ডকুমেন্ট তৈরি বা ওভাররাইট করতে, নিম্নলিখিত ভাষা-নির্দিষ্ট set() মেথডগুলো ব্যবহার করুন:
Web
setDoc() পদ্ধতিটি ব্যবহার করুন:
import { doc, setDoc } from "firebase/firestore"; // Add a new document in collection "cities" await setDoc(doc(db, "cities", "LA"), { name: "Los Angeles", state: "CA", country: "USA" });
Web
set() মেথডটি ব্যবহার করুন:
// Add a new document in collection "cities" db.collection("cities").doc("LA").set({ name: "Los Angeles", state: "CA", country: "USA" }) .then(() => { console.log("Document successfully written!"); }) .catch((error) => { console.error("Error writing document: ", error); });
সুইফট
setData() মেথডটি ব্যবহার করুন:
// Add a new document in collection "cities" do { try await db.collection("cities").document("LA").setData([ "name": "Los Angeles", "state": "CA", "country": "USA" ]) print("Document successfully written!") } catch { print("Error writing document: \(error)") }
উদ্দেশ্য-সি
setData: পদ্ধতিটি ব্যবহার করুন:
// Add a new document in collection "cities" [[[self.db collectionWithPath:@"cities"] documentWithPath:@"LA"] setData:@{ @"name": @"Los Angeles", @"state": @"CA", @"country": @"USA" } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error writing document: %@", error); } else { NSLog(@"Document successfully written!"); } }];
Kotlin
set() মেথডটি ব্যবহার করুন:
val city = hashMapOf( "name" to "Los Angeles", "state" to "CA", "country" to "USA", ) db.collection("cities").document("LA") .set(city) .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w(TAG, "Error writing document", e) }
Java
set() মেথডটি ব্যবহার করুন:
Map<String, Object> city = new HashMap<>(); city.put("name", "Los Angeles"); city.put("state", "CA"); city.put("country", "USA"); db.collection("cities").document("LA") .set(city) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully written!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error writing document", e); } });
Dart
set() মেথডটি ব্যবহার করুন:
final city = <String, String>{ "name": "Los Angeles", "state": "CA", "country": "USA" }; db .collection("cities") .doc("LA") .set(city) .onError((e, _) => print("Error writing document: $e"));
জাভা
set() মেথডটি ব্যবহার করুন:
পাইথন
set() মেথডটি ব্যবহার করুন:
Python
set() মেথডটি ব্যবহার করুন:
সি++
Set() মেথডটি ব্যবহার করুন:
// Add a new document in collection 'cities' db->Collection("cities") .Document("LA") .Set({{"name", FieldValue::String("Los Angeles")}, {"state", FieldValue::String("CA")}, {"country", FieldValue::String("USA")}}) .OnCompletion([](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully written!" << std::endl; } else { std::cout << "Error writing document: " << future.error_message() << std::endl; } });
নোড.জেএস
set() মেথডটি ব্যবহার করুন:
যান
Set() মেথডটি ব্যবহার করুন:
পিএইচপি
set() মেথডটি ব্যবহার করুন:
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
SetAsync() পদ্ধতিটি ব্যবহার করুন:
DocumentReference docRef = db.Collection("cities").Document("LA"); Dictionary<string, object> city = new Dictionary<string, object> { { "Name", "Los Angeles" }, { "State", "CA" }, { "Country", "USA" } }; docRef.SetAsync(city).ContinueWithOnMainThread(task => { Debug.Log("Added data to the LA document in the cities collection."); });
সি#
SetAsync() পদ্ধতিটি ব্যবহার করুন:
রুবি
set() মেথডটি ব্যবহার করুন:
যদি ডকুমেন্টটি বিদ্যমান না থাকে, তবে এটি তৈরি করা হবে। যদি ডকুমেন্টটি বিদ্যমান থাকে, তবে নতুন প্রদত্ত ডেটা দিয়ে এর বিষয়বস্তু ওভাররাইট করা হবে, যদি না আপনি নির্দিষ্ট করে দেন যে ডেটা বিদ্যমান ডকুমেন্টের সাথে মার্জ করা হবে, যেমনটি নিচে দেখানো হলো:
Web
import { doc, setDoc } from "firebase/firestore"; const cityRef = doc(db, 'cities', 'BJ'); setDoc(cityRef, { capital: true }, { merge: true });
Web
var cityRef = db.collection('cities').doc('BJ'); var setWithMerge = cityRef.set({ capital: true }, { merge: true });
সুইফট
// Update one field, creating the document if it does not exist. db.collection("cities").document("BJ").setData([ "capital": true ], merge: true)
উদ্দেশ্য-সি
// Write to the document reference, merging data with existing // if the document already exists [[[self.db collectionWithPath:@"cities"] documentWithPath:@"BJ"] setData:@{ @"capital": @YES } merge:YES completion:^(NSError * _Nullable error) { // ... }];
Kotlin
// Update one field, creating the document if it does not already exist. val data = hashMapOf("capital" to true) db.collection("cities").document("BJ") .set(data, SetOptions.merge())
Java
// Update one field, creating the document if it does not already exist. Map<String, Object> data = new HashMap<>(); data.put("capital", true); db.collection("cities").document("BJ") .set(data, SetOptions.merge());
Dart
// Update one field, creating the document if it does not already exist. final data = {"capital": true}; db.collection("cities").doc("BJ").set(data, SetOptions(merge: true));
জাভা
পাইথন
Python
সি++
db->Collection("cities").Document("BJ").Set( {{"capital", FieldValue::Boolean(true)}}, SetOptions::Merge());
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
DocumentReference docRef = db.Collection("cities").Document("LA"); Dictionary<string, object> update = new Dictionary<string, object> { { "capital", false } }; docRef.SetAsync(update, SetOptions.MergeAll);
সি#
রুবি
ডকুমেন্টটির অস্তিত্ব আছে কিনা সে বিষয়ে আপনি নিশ্চিত না হলে, সম্পূর্ণ ডকুমেন্ট ওভাররাইট হওয়া এড়াতে নতুন ডেটাকে যেকোনো বিদ্যমান ডকুমেন্টের সাথে মার্জ করার অপশনটি পাস করুন। যেসব ডকুমেন্টে ম্যাপ থাকে, সেগুলোর ক্ষেত্রে যদি আপনি এমন কোনো ফিল্ডসহ সেট নির্দিষ্ট করেন যাতে একটি খালি ম্যাপ রয়েছে, তাহলে টার্গেট ডকুমেন্টের ম্যাপ ফিল্ডটি ওভাররাইট হয়ে যাবে।
ডেটা টাইপ
Cloud Firestore আপনাকে একটি ডকুমেন্টের মধ্যে বিভিন্ন ধরণের ডেটা টাইপ লেখার সুযোগ দেয়, যার মধ্যে রয়েছে স্ট্রিং, বুলিয়ান, সংখ্যা, তারিখ, নাল, এবং নেস্টেড অ্যারে ও অবজেক্ট। আপনার কোডে আপনি যে ধরণের সংখ্যাই ব্যবহার করুন না কেন, Cloud Firestore সর্বদা সংখ্যাকে ডাবল হিসেবে সংরক্ষণ করে।
Web
import { doc, setDoc, Timestamp } from "firebase/firestore"; const docData = { stringExample: "Hello world!", booleanExample: true, numberExample: 3.14159265, dateExample: Timestamp.fromDate(new Date("December 10, 1815")), arrayExample: [5, true, "hello"], nullExample: null, objectExample: { a: 5, b: { nested: "foo" } } }; await setDoc(doc(db, "data", "one"), docData);
Web
var docData = { stringExample: "Hello world!", booleanExample: true, numberExample: 3.14159265, dateExample: firebase.firestore.Timestamp.fromDate(new Date("December 10, 1815")), arrayExample: [5, true, "hello"], nullExample: null, objectExample: { a: 5, b: { nested: "foo" } } }; db.collection("data").doc("one").set(docData).then(() => { console.log("Document successfully written!"); });
সুইফট
let docData: [String: Any] = [ "stringExample": "Hello world!", "booleanExample": true, "numberExample": 3.14159265, "dateExample": Timestamp(date: Date()), "arrayExample": [5, true, "hello"], "nullExample": NSNull(), "objectExample": [ "a": 5, "b": [ "nested": "foo" ] ] ] do { try await db.collection("data").document("one").setData(docData) print("Document successfully written!") } catch { print("Error writing document: \(error)") }
উদ্দেশ্য-সি
NSDictionary *docData = @{ @"stringExample": @"Hello world!", @"booleanExample": @YES, @"numberExample": @3.14, @"dateExample": [FIRTimestamp timestampWithDate:[NSDate date]], @"arrayExample": @[@5, @YES, @"hello"], @"nullExample": [NSNull null], @"objectExample": @{ @"a": @5, @"b": @{ @"nested": @"foo" } } }; [[[self.db collectionWithPath:@"data"] documentWithPath:@"one"] setData:docData completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error writing document: %@", error); } else { NSLog(@"Document successfully written!"); } }];
Kotlin
val docData = hashMapOf( "stringExample" to "Hello world!", "booleanExample" to true, "numberExample" to 3.14159265, "dateExample" to Timestamp(Date()), "listExample" to arrayListOf(1, 2, 3), "nullExample" to null, ) val nestedData = hashMapOf( "a" to 5, "b" to true, ) docData["objectExample"] = nestedData db.collection("data").document("one") .set(docData) .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully written!") } .addOnFailureListener { e -> Log.w(TAG, "Error writing document", e) }
Java
Map<String, Object> docData = new HashMap<>(); docData.put("stringExample", "Hello world!"); docData.put("booleanExample", true); docData.put("numberExample", 3.14159265); docData.put("dateExample", new Timestamp(new Date())); docData.put("listExample", Arrays.asList(1, 2, 3)); docData.put("nullExample", null); Map<String, Object> nestedData = new HashMap<>(); nestedData.put("a", 5); nestedData.put("b", true); docData.put("objectExample", nestedData); db.collection("data").document("one") .set(docData) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully written!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error writing document", e); } });
Dart
final docData = { "stringExample": "Hello world!", "booleanExample": true, "numberExample": 3.14159265, "dateExample": Timestamp.now(), "listExample": [1, 2, 3], "nullExample": null }; final nestedData = { "a": 5, "b": true, }; docData["objectExample"] = nestedData; db .collection("data") .doc("one") .set(docData) .onError((e, _) => print("Error writing document: $e"));
জাভা
পাইথন
Python
সি++
MapFieldValue doc_data{ {"stringExample", FieldValue::String("Hello world!")}, {"booleanExample", FieldValue::Boolean(true)}, {"numberExample", FieldValue::Double(3.14159265)}, {"dateExample", FieldValue::Timestamp(Timestamp::Now())}, {"arrayExample", FieldValue::Array({FieldValue::Integer(1), FieldValue::Integer(2), FieldValue::Integer(3)})}, {"nullExample", FieldValue::Null()}, {"objectExample", FieldValue::Map( {{"a", FieldValue::Integer(5)}, {"b", FieldValue::Map( {{"nested", FieldValue::String("foo")}})}})}, }; db->Collection("data").Document("one").Set(doc_data).OnCompletion( [](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully written!" << std::endl; } else { std::cout << "Error writing document: " << future.error_message() << std::endl; } });
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
DocumentReference docRef = db.Collection("data").Document("one"); Dictionary<string, object> docData = new Dictionary<string, object> { { "stringExample", "Hello World" }, { "booleanExample", false }, { "numberExample", 3.14159265 }, { "nullExample", null }, { "arrayExample", new List<object>() { 5, true, "Hello" } }, { "objectExample", new Dictionary<string, object> { { "a", 5 }, { "b", true }, } }, }; docRef.SetAsync(docData);
সি#
রুবি
কাস্টম অবজেক্ট
আপনার ডকুমেন্ট উপস্থাপন করার জন্য Map বা Dictionary অবজেক্ট ব্যবহার করা প্রায়শই অসুবিধাজনক, তাই Cloud Firestore কাস্টম ক্লাস ব্যবহার করে ডকুমেন্ট লেখার সুবিধা দেয়। Cloud Firestore অবজেক্টগুলোকে সমর্থিত ডেটা টাইপে রূপান্তর করে।
কাস্টম ক্লাস ব্যবহার করে, আপনি প্রাথমিক উদাহরণটি নিম্নলিখিত উপায়ে পুনরায় লিখতে পারেন:
Web
class City { constructor (name, state, country ) { this.name = name; this.state = state; this.country = country; } toString() { return this.name + ', ' + this.state + ', ' + this.country; } } // Firestore data converter const cityConverter = { toFirestore: (city) => { return { name: city.name, state: city.state, country: city.country }; }, fromFirestore: (snapshot, options) => { const data = snapshot.data(options); return new City(data.name, data.state, data.country); } };
Web
class City { constructor (name, state, country ) { this.name = name; this.state = state; this.country = country; } toString() { return this.name + ', ' + this.state + ', ' + this.country; } } // Firestore data converter var cityConverter = { toFirestore: function(city) { return { name: city.name, state: city.state, country: city.country }; }, fromFirestore: function(snapshot, options){ const data = snapshot.data(options); return new City(data.name, data.state, data.country); } };
সুইফট
public struct City: Codable, Sendable { let name: String let state: String? let country: String? let isCapital: Bool? let population: Int64? enum CodingKeys: String, CodingKey { case name case state case country case isCapital = "capital" case population } }
উদ্দেশ্য-সি
// This isn't supported in Objective-C.
Kotlin
data class City( val name: String? = null, val state: String? = null, val country: String? = null, @field:JvmField // use this annotation if your Boolean field is prefixed with 'is' val isCapital: Boolean? = null, val population: Long? = null, val regions: List<String>? = null, )
Java
প্রতিটি কাস্টম ক্লাসে অবশ্যই একটি পাবলিক কনস্ট্রাক্টর থাকতে হবে যা কোনো আর্গুমেন্ট গ্রহণ করে না। এছাড়াও, ক্লাসটিতে প্রতিটি প্রপার্টির জন্য একটি পাবলিক গেটার অন্তর্ভুক্ত থাকতে হবে।
public class City { private String name; private String state; private String country; private boolean capital; private long population; private List<String> regions; public City() {} public City(String name, String state, String country, boolean capital, long population, List<String> regions) { // ... } public String getName() { return name; } public String getState() { return state; } public String getCountry() { return country; } public boolean isCapital() { return capital; } public long getPopulation() { return population; } public List<String> getRegions() { return regions; } }
Dart
class City { final String? name; final String? state; final String? country; final bool? capital; final int? population; final List<String>? regions; City({ this.name, this.state, this.country, this.capital, this.population, this.regions, }); factory City.fromFirestore( DocumentSnapshot<Map<String, dynamic>> snapshot, SnapshotOptions? options, ) { final data = snapshot.data(); return City( name: data?['name'], state: data?['state'], country: data?['country'], capital: data?['capital'], population: data?['population'], regions: data?['regions'] is Iterable ? List.from(data?['regions']) : null, ); } Map<String, dynamic> toFirestore() { return { if (name != null) "name": name, if (state != null) "state": state, if (country != null) "country": country, if (capital != null) "capital": capital, if (population != null) "population": population, if (regions != null) "regions": regions, }; } }
জাভা
পাইথন
Python
সি++
// This is not yet supported.নোড.জেএস
// Node.js uses JavaScript objectsযান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
[FirestoreData] public class City { [FirestoreProperty] public string Name { get; set; } [FirestoreProperty] public string State { get; set; } [FirestoreProperty] public string Country { get; set; } [FirestoreProperty] public bool Capital { get; set; } [FirestoreProperty] public long Population { get; set; } }
সি#
রুবি
// This isn't supported in Ruby
Web
import { doc, setDoc } from "firebase/firestore"; // Set with cityConverter const ref = doc(db, "cities", "LA").withConverter(cityConverter); await setDoc(ref, new City("Los Angeles", "CA", "USA"));
Web
// Set with cityConverter db.collection("cities").doc("LA") .withConverter(cityConverter) .set(new City("Los Angeles", "CA", "USA"));
সুইফট
let city = City(name: "Los Angeles", state: "CA", country: "USA", isCapital: false, population: 5000000) do { try db.collection("cities").document("LA").setData(from: city) } catch let error { print("Error writing city to Firestore: \(error)") }
উদ্দেশ্য-সি
// This isn't supported in Objective-C.
Kotlin
val city = City( "Los Angeles", "CA", "USA", false, 5000000L, listOf("west_coast", "socal"), ) db.collection("cities").document("LA").set(city)
Java
City city = new City("Los Angeles", "CA", "USA", false, 5000000L, Arrays.asList("west_coast", "sorcal")); db.collection("cities").document("LA").set(city);
Dart
final city = City( name: "Los Angeles", state: "CA", country: "USA", capital: false, population: 5000000, regions: ["west_coast", "socal"], ); final docRef = db .collection("cities") .withConverter( fromFirestore: City.fromFirestore, toFirestore: (City city, options) => city.toFirestore(), ) .doc("LA"); await docRef.set(city);
জাভা
পাইথন
Python
সি++
// This is not yet supported.নোড.জেএস
// Node.js uses JavaScript objectsযান
পিএইচপি
// This isn't supported in PHP.ঐক্য
DocumentReference docRef = db.Collection("cities").Document("LA"); City city = new City { Name = "Los Angeles", State = "CA", Country = "USA", Capital = false, Population = 3900000L }; docRef.SetAsync(city);
সি#
রুবি
// This isn't supported in Ruby.
একটি নথি যোগ করুন
যখন আপনি set() ব্যবহার করে একটি ডকুমেন্ট তৈরি করেন, তখন আপনাকে অবশ্যই তৈরি করতে চাওয়া ডকুমেন্টটির জন্য একটি আইডি নির্দিষ্ট করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
Web
import { doc, setDoc } from "firebase/firestore"; await setDoc(doc(db, "cities", "new-city-id"), data);
Web
db.collection("cities").doc("new-city-id").set(data);
সুইফট
db.collection("cities").document("new-city-id").setData(data)
উদ্দেশ্য-সি
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"new-city-id"] setData:data];
Kotlin
db.collection("cities").document("new-city-id").set(data)
Java
db.collection("cities").document("new-city-id").set(data);
Dart
db.collection("cities").doc("new-city-id").set({"name": "Chicago"});
জাভা
পাইথন
Python
সি++
db->Collection("cities").Document("SF").Set({/*some data*/});
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
db.Collection("cities").Document("new-city-id").SetAsync(city);
সি#
রুবি
ডকুমেন্টটির কোনো অর্থবহ আইডি না থাকলে, Cloud Firestore আপনার জন্য স্বয়ংক্রিয়ভাবে একটি আইডি তৈরি করে দিতে পারে। আপনি নিম্নলিখিত ভাষা-নির্দিষ্ট add() মেথডগুলো কল করতে পারেন:
Web
addDoc() পদ্ধতিটি ব্যবহার করুন:
import { collection, addDoc } from "firebase/firestore"; // Add a new document with a generated id. const docRef = await addDoc(collection(db, "cities"), { name: "Tokyo", country: "Japan" }); console.log("Document written with ID: ", docRef.id);
Web
add() মেথডটি ব্যবহার করুন:
// Add a new document with a generated id. db.collection("cities").add({ name: "Tokyo", country: "Japan" }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
সুইফট
addDocument() মেথডটি ব্যবহার করুন:
// Add a new document with a generated id. do { let ref = try await db.collection("cities").addDocument(data: [ "name": "Tokyo", "country": "Japan" ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
উদ্দেশ্য-সি
addDocumentWithData: পদ্ধতিটি ব্যবহার করুন:
// Add a new document with a generated id. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"cities"] addDocumentWithData:@{ @"name": @"Tokyo", @"country": @"Japan" } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
add() মেথডটি ব্যবহার করুন:
// Add a new document with a generated id. val data = hashMapOf( "name" to "Tokyo", "country" to "Japan", ) db.collection("cities") .add(data) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot written with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
add() মেথডটি ব্যবহার করুন:
// Add a new document with a generated id. Map<String, Object> data = new HashMap<>(); data.put("name", "Tokyo"); data.put("country", "Japan"); db.collection("cities") .add(data) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot written with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
add() মেথডটি ব্যবহার করুন:
// Add a new document with a generated id. final data = {"name": "Tokyo", "country": "Japan"}; db.collection("cities").add(data).then((documentSnapshot) => print("Added Data with ID: ${documentSnapshot.id}"));
জাভা
add() মেথডটি ব্যবহার করুন:
পাইথন
add() মেথডটি ব্যবহার করুন:
Python
add() মেথডটি ব্যবহার করুন:
সি++
Add() মেথডটি ব্যবহার করুন:
db->Collection("cities").Add({/*some data*/});
নোড.জেএস
add() মেথডটি ব্যবহার করুন:
যান
Add() মেথডটি ব্যবহার করুন:
পিএইচপি
add() মেথডটি ব্যবহার করুন:
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
AddAsync() পদ্ধতিটি ব্যবহার করুন:
Dictionary<string, object> city = new Dictionary<string, object> { { "Name", "Tokyo" }, { "Country", "Japan" } }; db.Collection("cities").AddAsync(city).ContinueWithOnMainThread(task => { DocumentReference addedDocRef = task.Result; Debug.Log(String.Format("Added document with ID: {0}.", addedDocRef.Id)); });
সি#
AddAsync() পদ্ধতিটি ব্যবহার করুন:
রুবি
add() মেথডটি ব্যবহার করুন:
উদাহরণগুলিতে cities মতো একটি শীর্ষ-স্তরের সংগ্রহে ডেটা যোগ করার পদ্ধতি দেখানো হয়েছে। Cloud Firestore ডকুমেন্টের ভিতরে cities/LA/landmarks মতো উপ-সংগ্রহও সমর্থন করে। উপ-সংগ্রহ নিয়ে কাজ করার সময়ও একই set() , add() , এবং update() পদ্ধতিগুলি প্রযোজ্য হয়।
কিছু ক্ষেত্রে, স্বয়ংক্রিয়ভাবে তৈরি একটি আইডি দিয়ে একটি ডকুমেন্ট রেফারেন্স তৈরি করা এবং পরে সেই রেফারেন্সটি ব্যবহার করা সুবিধাজনক হতে পারে। এই ধরনের ব্যবহারের জন্য, আপনি নিম্নলিখিত উপায়ে doc() কল করতে পারেন:
Web
import { collection, doc, setDoc } from "firebase/firestore"; // Add a new document with a generated id const newCityRef = doc(collection(db, "cities")); // later... await setDoc(newCityRef, data);
Web
// Add a new document with a generated id. var newCityRef = db.collection("cities").doc(); // later... newCityRef.set(data);
সুইফট
let newCityRef = db.collection("cities").document() // later... newCityRef.setData([ // ... ])
উদ্দেশ্য-সি
FIRDocumentReference *newCityRef = [[self.db collectionWithPath:@"cities"] documentWithAutoID]; // later... [newCityRef setData:@{ /* ... */ }];
Kotlin
val data = HashMap<String, Any>() val newCityRef = db.collection("cities").document() // Later... newCityRef.set(data)
Java
Map<String, Object> data = new HashMap<>(); DocumentReference newCityRef = db.collection("cities").document(); // Later... newCityRef.set(data);
Dart
// Add a new document with a generated id. final data = <String, dynamic>{}; final newCityRef = db.collection("cities").doc(); // Later... newCityRef.set(data);
জাভা
পাইথন
Python
সি++
DocumentReference new_city_ref = db->Collection("cities").Document();
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
DocumentReference addedDocRef = db.Collection("cities").Document(); Debug.Log(String.Format("Added document with ID: {0}.", addedDocRef.Id)); addedDocRef.SetAsync(city).ContinueWithOnMainThread(task => { Debug.Log(String.Format( "Added data to the {0} document in the cities collection.", addedDocRef.Id)); });
সি#
রুবি
ব্যাকএন্ডে, .add(...) এবং .doc().set(...) সমতুল্য, তাই আপনি যেকোনো একটি ব্যবহার করতে পারেন।
একটি নথি আপডেট করুন
সম্পূর্ণ ডকুমেন্টটি ওভাররাইট না করে এর কিছু ফিল্ড আপডেট করতে, নিম্নলিখিত ভাষা-নির্দিষ্ট update() মেথডগুলো ব্যবহার করুন:
Web
updateDoc() পদ্ধতিটি ব্যবহার করুন:
import { doc, updateDoc } from "firebase/firestore"; const washingtonRef = doc(db, "cities", "DC"); // Set the "capital" field of the city 'DC' await updateDoc(washingtonRef, { capital: true });
Web
update() মেথডটি ব্যবহার করুন:
var washingtonRef = db.collection("cities").doc("DC"); // Set the "capital" field of the city 'DC' return washingtonRef.update({ capital: true }) .then(() => { console.log("Document successfully updated!"); }) .catch((error) => { // The document probably doesn't exist. console.error("Error updating document: ", error); });
সুইফট
updateData() মেথডটি ব্যবহার করুন:
let washingtonRef = db.collection("cities").document("DC") // Set the "capital" field of the city 'DC' do { try await washingtonRef.updateData([ "capital": true ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
উদ্দেশ্য-সি
updateData: ` পদ্ধতিটি ব্যবহার করুন:
FIRDocumentReference *washingtonRef = [[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"]; // Set the "capital" field of the city [washingtonRef updateData:@{ @"capital": @YES } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin
update() মেথডটি ব্যবহার করুন:
val washingtonRef = db.collection("cities").document("DC") // Set the "isCapital" field of the city 'DC' washingtonRef .update("capital", true) .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully updated!") } .addOnFailureListener { e -> Log.w(TAG, "Error updating document", e) }
Java
update() মেথডটি ব্যবহার করুন:
DocumentReference washingtonRef = db.collection("cities").document("DC"); // Set the "isCapital" field of the city 'DC' washingtonRef .update("capital", true) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully updated!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error updating document", e); } });
Dart
update() মেথডটি ব্যবহার করুন:
final washingtonRef = db.collection("cites").doc("DC"); washingtonRef.update({"capital": true}).then( (value) => print("DocumentSnapshot successfully updated!"), onError: (e) => print("Error updating document $e"));
জাভা
update() মেথডটি ব্যবহার করুন:
পাইথন
update() মেথডটি ব্যবহার করুন:
Python
update() মেথডটি ব্যবহার করুন:
সি++
Update() মেথডটি ব্যবহার করুন:
DocumentReference washington_ref = db->Collection("cities").Document("DC"); // Set the "capital" field of the city "DC". washington_ref.Update({{"capital", FieldValue::Boolean(true)}});
নোড.জেএস
update() মেথডটি ব্যবহার করুন:
যান
Update() মেথডটি ব্যবহার করুন:
পিএইচপি
update() মেথডটি ব্যবহার করুন:
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
UpdateAsync() পদ্ধতিটি ব্যবহার করুন:
DocumentReference cityRef = db.Collection("cities").Document("new-city-id"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", false } }; cityRef.UpdateAsync(updates).ContinueWithOnMainThread(task => { Debug.Log( "Updated the Capital field of the new-city-id document in the cities collection."); }); // You can also update a single field with: cityRef.UpdateAsync("Capital", false);
সি#
UpdateAsync() পদ্ধতিটি ব্যবহার করুন:
রুবি
update() মেথডটি ব্যবহার করুন:
সার্ভার টাইমস্ট্যাম্প
আপনি আপনার ডকুমেন্টের একটি ফিল্ডে সার্ভার টাইমস্ট্যাম্প সেট করতে পারেন, যা ট্র্যাক করে কখন সার্ভার আপডেটটি গ্রহণ করে।
Web
import { updateDoc, serverTimestamp } from "firebase/firestore"; const docRef = doc(db, 'objects', 'some-id'); // Update the timestamp field with the value from the server const updateTimestamp = await updateDoc(docRef, { timestamp: serverTimestamp() });
Web
var docRef = db.collection('objects').doc('some-id'); // Update the timestamp field with the value from the server var updateTimestamp = docRef.update({ timestamp: firebase.firestore.FieldValue.serverTimestamp() });
সুইফট
do { try await db.collection("objects").document("some-id").updateData([ "lastUpdated": FieldValue.serverTimestamp(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
উদ্দেশ্য-সি
[[[self.db collectionWithPath:@"objects"] documentWithPath:@"some-id"] updateData:@{ @"lastUpdated": [FIRFieldValue fieldValueForServerTimestamp] } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin
// If you're using custom Kotlin objects in Android, add an @ServerTimestamp // annotation to a Date field for your custom object classes. This indicates // that the Date field should be treated as a server timestamp by the object mapper. val docRef = db.collection("objects").document("some-id") // Update the timestamp field with the value from the server val updates = hashMapOf<String, Any>( "timestamp" to FieldValue.serverTimestamp(), ) docRef.update(updates).addOnCompleteListener { }
Java
// If you're using custom Java objects in Android, add an @ServerTimestamp // annotation to a Date field for your custom object classes. This indicates // that the Date field should be treated as a server timestamp by the object mapper. DocumentReference docRef = db.collection("objects").document("some-id"); // Update the timestamp field with the value from the server Map<String,Object> updates = new HashMap<>(); updates.put("timestamp", FieldValue.serverTimestamp()); docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() { // ... // ...
Dart
final docRef = db.collection("objects").doc("some-id"); final updates = <String, dynamic>{ "timestamp": FieldValue.serverTimestamp(), }; docRef.update(updates).then( (value) => print("DocumentSnapshot successfully updated!"), onError: (e) => print("Error updating document $e"));
জাভা
পাইথন
Python
সি++
DocumentReference doc_ref = db->Collection("objects").Document("some-id"); doc_ref.Update({{"timestamp", FieldValue::ServerTimestamp()}}) .OnCompletion([](const Future<void>& future) { // ... });
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
DocumentReference cityRef = db.Collection("cities").Document("new-city-id"); cityRef.UpdateAsync("Timestamp", FieldValue.ServerTimestamp) .ContinueWithOnMainThread(task => { Debug.Log( "Updated the Timestamp field of the new-city-id document in the cities " + "collection."); });
সি#
রুবি
একটি ট্রানজ্যাকশনের মধ্যে একাধিক টাইমস্ট্যাম্প ফিল্ড আপডেট করার সময়, প্রতিটি ফিল্ড একই সার্ভার টাইমস্ট্যাম্প মান গ্রহণ করে।
নেস্টেড অবজেক্টের ফিল্ডগুলি আপডেট করুন
আপনার ডকুমেন্টে যদি নেস্টেড অবজেক্ট থাকে, তাহলে update() কল করার সময় ডকুমেন্টের ভেতরের নেস্টেড ফিল্ডগুলোকে রেফারেন্স করতে আপনি ডট নোটেশন ব্যবহার করতে পারেন:
Web
import { doc, setDoc, updateDoc } from "firebase/firestore"; // Create an initial document to update. const frankDocRef = doc(db, "users", "frank"); await setDoc(frankDocRef, { name: "Frank", favorites: { food: "Pizza", color: "Blue", subject: "recess" }, age: 12 }); // To update age and favorite color: await updateDoc(frankDocRef, { "age": 13, "favorites.color": "Red" });
Web
// Create an initial document to update. var frankDocRef = db.collection("users").doc("frank"); frankDocRef.set({ name: "Frank", favorites: { food: "Pizza", color: "Blue", subject: "recess" }, age: 12 }); // To update age and favorite color: db.collection("users").doc("frank").update({ "age": 13, "favorites.color": "Red" }) .then(() => { console.log("Document successfully updated!"); });
সুইফট
// Create an initial document to update. let frankDocRef = db.collection("users").document("frank") do { try await frankDocRef.setData([ "name": "Frank", "favorites": [ "food": "Pizza", "color": "Blue", "subject": "recess" ], "age": 12 ]) // To update age and favorite color: try await frankDocRef.updateData([ "age": 13, "favorites.color": "Red" ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
উদ্দেশ্য-সি
// Create an initial document to update. FIRDocumentReference *frankDocRef = [[self.db collectionWithPath:@"users"] documentWithPath:@"frank"]; [frankDocRef setData:@{ @"name": @"Frank", @"favorites": @{ @"food": @"Pizza", @"color": @"Blue", @"subject": @"recess" }, @"age": @12 }]; // To update age and favorite color: [frankDocRef updateData:@{ @"age": @13, @"favorites.color": @"Red", } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin
// Assume the document contains: // { // name: "Frank", // favorites: { food: "Pizza", color: "Blue", subject: "recess" } // age: 12 // } // // To update age and favorite color: db.collection("users").document("frank") .update( mapOf( "age" to 13, "favorites.color" to "Red", ), )
Java
// Assume the document contains: // { // name: "Frank", // favorites: { food: "Pizza", color: "Blue", subject: "recess" } // age: 12 // } // // To update age and favorite color: db.collection("users").document("frank") .update( "age", 13, "favorites.color", "Red" );
Dart
// Assume the document contains: // { // name: "Frank", // favorites: { food: "Pizza", color: "Blue", subject: "recess" } // age: 12 // } db .collection("users") .doc("frank") .update({"age": 13, "favorites.color": "Red"});
জাভা
পাইথন
Python
সি++
// Assume the document contains: // { // name: "Frank", // favorites: { food: "Pizza", color: "Blue", subject: "recess" } // age: 12 // } // // To update age and favorite color: db->Collection("users").Document("frank").Update({ {"age", FieldValue::Integer(13)}, {"favorites.color", FieldValue::String("red")}, });
নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
DocumentReference frankDocRef = db.Collection("users").Document("frank"); Dictionary<string, object> initialData = new Dictionary<string, object> { { "Name", "Frank" }, { "Age", 12 } }; Dictionary<string, object> favorites = new Dictionary<string, object> { { "Food", "Pizza" }, { "Color", "Blue" }, { "Subject", "Recess" }, }; initialData.Add("Favorites", favorites); frankDocRef.SetAsync(initialData).ContinueWithOnMainThread(task => { // Update age and favorite color Dictionary<string, object> updates = new Dictionary<string, object> { { "Age", 13 }, { "Favorites.Color", "Red" }, }; // Asynchronously update the document return frankDocRef.UpdateAsync(updates); }).ContinueWithOnMainThread(task => { Debug.Log( "Updated the age and favorite color fields of the Frank document in " + "the users collection."); });
সি#
রুবি
ডট নোটেশন আপনাকে অন্য নেস্টেড ফিল্ডগুলোকে ওভাররাইট না করেই একটিমাত্র নেস্টেড ফিল্ড আপডেট করার সুযোগ দেয়। যদি আপনি ডট নোটেশন ছাড়া কোনো নেস্টেড ফিল্ড আপডেট করেন, তাহলে পুরো ম্যাপ ফিল্ডটিই ওভাররাইট হয়ে যাবে, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:
ওয়েব
// Create our initial doc db.collection("users").doc("frank").set({ name: "Frank", favorites: { food: "Pizza", color: "Blue", subject: "Recess" }, age: 12 }).then(function() { console.log("Frank created"); }); // Update the doc without using dot notation. // Notice the map value for favorites. db.collection("users").doc("frank").update({ favorites: { food: "Ice Cream" } }).then(function() { console.log("Frank food updated"); }); /* Ending State, favorite.color and favorite.subject are no longer present: /users /frank { name: "Frank", favorites: { food: "Ice Cream", }, age: 12 } */
একটি অ্যারের উপাদান আপডেট করুন
আপনার ডকুমেন্টে যদি কোনো অ্যারে ফিল্ড থাকে, তাহলে আপনি এলিমেন্ট যোগ ও অপসারণ করতে arrayUnion() এবং arrayRemove() ব্যবহার করতে পারেন। arrayUnion() একটি অ্যারেতে এলিমেন্ট যোগ করে, কিন্তু শুধুমাত্র সেই এলিমেন্টগুলোই যোগ করে যেগুলো আগে থেকে উপস্থিত নেই। arrayRemove() প্রতিটি প্রদত্ত এলিমেন্টের সমস্ত দৃষ্টান্ত অপসারণ করে।
Web
import { doc, updateDoc, arrayUnion, arrayRemove } from "firebase/firestore"; const washingtonRef = doc(db, "cities", "DC"); // Atomically add a new region to the "regions" array field. await updateDoc(washingtonRef, { regions: arrayUnion("greater_virginia") }); // Atomically remove a region from the "regions" array field. await updateDoc(washingtonRef, { regions: arrayRemove("east_coast") });
Web
var washingtonRef = db.collection("cities").doc("DC"); // Atomically add a new region to the "regions" array field. washingtonRef.update({ regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia") }); // Atomically remove a region from the "regions" array field. washingtonRef.update({ regions: firebase.firestore.FieldValue.arrayRemove("east_coast") });
সুইফট
let washingtonRef = db.collection("cities").document("DC") // Atomically add a new region to the "regions" array field. washingtonRef.updateData([ "regions": FieldValue.arrayUnion(["greater_virginia"]) ]) // Atomically remove a region from the "regions" array field. washingtonRef.updateData([ "regions": FieldValue.arrayRemove(["east_coast"]) ])
উদ্দেশ্য-সি
FIRDocumentReference *washingtonRef = [[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"]; // Atomically add a new region to the "regions" array field. [washingtonRef updateData:@{ @"regions": [FIRFieldValue fieldValueForArrayUnion:@[@"greater_virginia"]] }]; // Atomically remove a new region to the "regions" array field. [washingtonRef updateData:@{ @"regions": [FIRFieldValue fieldValueForArrayRemove:@[@"east_coast"]] }];
Kotlin
val washingtonRef = db.collection("cities").document("DC") // Atomically add a new region to the "regions" array field. washingtonRef.update("regions", FieldValue.arrayUnion("greater_virginia")) // Atomically remove a region from the "regions" array field. washingtonRef.update("regions", FieldValue.arrayRemove("east_coast"))
Java
DocumentReference washingtonRef = db.collection("cities").document("DC"); // Atomically add a new region to the "regions" array field. washingtonRef.update("regions", FieldValue.arrayUnion("greater_virginia")); // Atomically remove a region from the "regions" array field. washingtonRef.update("regions", FieldValue.arrayRemove("east_coast"));
Dart
final washingtonRef = db.collection("cities").doc("DC"); // Atomically add a new region to the "regions" array field. washingtonRef.update({ "regions": FieldValue.arrayUnion(["greater_virginia"]), }); // Atomically remove a region from the "regions" array field. washingtonRef.update({ "regions": FieldValue.arrayRemove(["east_coast"]), });
জাভা
পাইথন
Python
সি++
// This is not yet supported.নোড.জেএস
যান
// Not supported yetপিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
// This is not yet supported in the Unity SDK
সি#
রুবি
// Not supported yet
একটি সংখ্যাসূচক মান বৃদ্ধি করুন
নিম্নলিখিত উদাহরণে দেখানো অনুযায়ী আপনি একটি সাংখ্যিক ফিল্ডের মান বাড়াতে বা কমাতে পারেন। ইনক্রিমেন্ট অপারেশন একটি ফিল্ডের বর্তমান মানকে প্রদত্ত পরিমাণ দ্বারা বৃদ্ধি বা হ্রাস করে।
Web
import { doc, updateDoc, increment } from "firebase/firestore"; const washingtonRef = doc(db, "cities", "DC"); // Atomically increment the population of the city by 50. await updateDoc(washingtonRef, { population: increment(50) });
Web
var washingtonRef = db.collection('cities').doc('DC'); // Atomically increment the population of the city by 50. washingtonRef.update({ population: firebase.firestore.FieldValue.increment(50) });
সুইফট
let washingtonRef = db.collection("cities").document("DC") // Atomically increment the population of the city by 50. // Note that increment() with no arguments increments by 1. washingtonRef.updateData([ "population": FieldValue.increment(Int64(50)) ])
উদ্দেশ্য-সি
FIRDocumentReference *washingtonRef = [[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"]; // Atomically increment the population of the city by 50. // Note that increment() with no arguments increments by 1. [washingtonRef updateData:@{ @"population": [FIRFieldValue fieldValueForIntegerIncrement:50] }];
Kotlin
val washingtonRef = db.collection("cities").document("DC") // Atomically increment the population of the city by 50. washingtonRef.update("population", FieldValue.increment(50))
Java
DocumentReference washingtonRef = db.collection("cities").document("DC"); // Atomically increment the population of the city by 50. washingtonRef.update("population", FieldValue.increment(50));
Dart
var washingtonRef = db.collection('cities').doc('DC'); // Atomically increment the population of the city by 50. washingtonRef.update( {"population": FieldValue.increment(50)}, );
জাভা
পাইথন
Python
সি++
// This is not yet supported.নোড.জেএস
যান
পিএইচপি
পিএইচপি
Cloud Firestore ক্লায়েন্ট ইনস্টল এবং তৈরি করার বিষয়ে আরও জানতে, Cloud Firestore ক্লায়েন্ট লাইব্রেরি দেখুন।
ঐক্য
// This is not yet supported in the Unity SDK.
সি#
রুবি
কাউন্টার বাস্তবায়নের জন্য ইনক্রিমেন্ট অপারেশনগুলো উপযোগী। মনে রাখবেন যে, একটিমাত্র ডকুমেন্ট খুব দ্রুত আপডেট করলে কনটেনশন বা ত্রুটি দেখা দিতে পারে। যদি আপনার কাউন্টারটি খুব উচ্চ হারে আপডেট করার প্রয়োজন হয়, তবে ডিস্ট্রিবিউটেড কাউন্টারস পৃষ্ঠাটি দেখুন।