Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

একত্রিত প্রশ্ন সহ নথি গণনা

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

একটি সমষ্টিগত প্রশ্ন একাধিক সূচক এন্ট্রি থেকে ডেটা প্রক্রিয়া করে একটি একক সারাংশ মান ফেরত দেয়।

ক্লাউড ফায়ারস্টোর count() একত্রীকরণ প্রশ্ন সমর্থন করে। count() আপনাকে একটি সংগ্রহ বা অনুসন্ধানে নথির সংখ্যা নির্ধারণ করতে দেয়। সার্ভারটি গণনা গণনা করে, এবং সম্পূর্ণ ক্যোয়ারী চালানোর তুলনায়, শুধুমাত্র একটি একক পূর্ণসংখ্যার ফলাফল আপনার অ্যাপে ফেরত পাঠায়, বিল করা ডকুমেন্ট রিড এবং ট্রান্সফার করা বাইট উভয়েই সংরক্ষণ করে।

সমষ্টিগত প্রশ্নগুলি বিদ্যমান সূচক কনফিগারেশনের উপর নির্ভর করে যা আপনার প্রশ্নগুলি ইতিমধ্যেই ব্যবহার করে এবং স্ক্যান করা সূচক এন্ট্রির সংখ্যার সমানুপাতিকভাবে স্কেল করে৷ এর মানে হল ছোট থেকে মাঝারি আকারের ডেটা সেটের সমষ্টি 20-40 ms এর মধ্যে কাজ করে, যদিও আইটেম গণনা করা সংখ্যার সাথে লেটেন্সি বৃদ্ধি পায়।

count() সমষ্টি ব্যবহার করুন

আমরা ডেটা গেটিং-এ যে ডেটা সেট আপ করেছি তার উদাহরণ পড়ুন।

নিম্নলিখিত count() সমষ্টি cities সংগ্রহে মোট শহরের সংখ্যা প্রদান করে৷

Web version 9

const coll = collection(db, "cities");
const snapshot = await getCountFromServer(coll);
console.log('count: ', snapshot.data().count);
    
সুইফট
let collection = db.collection("cities")
let countQuery = collection.count
do {
  let snapshot = try await countQuery.getAggregation(source: .server)
  print(snapshot.count)
} catch {
  print(error);
}
      
উদ্দেশ্য গ
FIRCollectionReference* collection = [db collectionWithPath:@"cities"];
[collection.count
  aggregationWithSource:FIRAggregateSourceServer
  completion:^(FIRAggregateQuerySnapshot *snapshot, NSError *error) {
    if (error == nil) {
        NSLog(@"Cities count: %@", snapshot.count);
    } else {
        NSLog(@"Error fetching count: %@", error);
    }
  }
];
      

Kotlin+KTX

val collection = db.collection("cities")
val countQuery = collection.count()
countQuery.get(AggregateSource.SERVER).addOnCompleteListener { task ->
  if (task.isSuccessful) {
    val snapshot = task.result
    Log.d(TAG, "Count: ${snapshot.count}")
  } else {
    Log.d(TAG, "Count failed: ", task.getException())
  }
}
      

Java

CollectionReference collection = db.collection("cities");
AggregateQuery countQuery = collection.count();
countQuery.get(AggregateSource.SERVER).addOnCompleteListener(task -> {
  if (task.isSuccessful()) {
    AggregateQuerySnapshot snapshot = task.getResult();
    Log.d(TAG, "Count: " + snapshot.getCount());
  } else {
    Log.d(TAG, "Count failed: ", task.getException());
  }
});
      
জাভা
CollectionReference collection = db.collection("cities");
AggregateQuerySnapshot snapshot = collection.count().get().get();
System.out.println("Count: " + snapshot.getCount());
      
Node.js
const collectionRef = db.collection('cities');
const snapshot = await collectionRef.count().get();
console.log(snapshot.data().count);
      

count() একত্রীকরণ ক্যোয়ারীতে থাকা যেকোন ফিল্টার এবং যেকোন limit ধারা বিবেচনা করে। উদাহরণস্বরূপ, নিম্নলিখিত সমষ্টিটি শহরের সংখ্যার একটি গণনা প্রদান করে যেখানে state CA এর সমান।

Web version 9

const coll = collection(db, "cities");
const query_ = query(coll, where('state', '==', 'CA'));
const snapshot = await getCountFromServer(query_);
console.log('count: ', snapshot.data().count);
    
সুইফট
let collection = db.collection("cities")
let query = collection.whereField("state", isEqualTo: "CA")
let countQuery = query.count
do {
  let snapshot = try await countQuery.getAggregation(source: .server)
  print(snapshot.count)
} catch {
  print(error);
}
      
উদ্দেশ্য গ
FIRCollectionReference* collection = [db collectionWithPath:@"cities"];
FIRQuery* query = [collection queryWhereField:@"state" isEqualTo:@"CA"];
[query.count
  aggregationWithSource:FIRAggregateSourceServer
  completion:^(FIRAggregateQuerySnapshot *snapshot, NSError *error) {
    if (error == nil) {
        NSLog(@"Cities count: %@", snapshot.count);
    } else {
        NSLog(@"Error fetching count: %@", error);
    }
  }
];
      

Kotlin+KTX

val collection = db.collection("cities")
val query = collection.whereEqualTo("state", "CA")
val countQuery = query.count()
countQuery.get(AggregateSource.SERVER).addOnCompleteListener { task ->
  if (task.isSuccessful) {
    val snapshot = task.result
    Log.d(TAG, "Count: ${snapshot.count}")
  } else {
    Log.d(TAG, "Count failed: ", task.getException())
  }
}
      

Java

CollectionReference collection = db.collection("cities");
Query query = collection.whereEqualTo("state", "CA");
AggregateQuery countQuery = query.count();
countQuery.get(AggregateSource.SERVER).addOnCompleteListener(task -> {
  if (task.isSuccessful()) {
    AggregateQuerySnapshot snapshot = task.getResult();
    Log.d(TAG, "Count: " + snapshot.getCount());
  } else {
    Log.d(TAG, "Count failed: ", task.getException());
  }
});
      
জাভা
CollectionReference collection = db.collection("cities");
Query query = collection.whereEqualTo("state", "CA");
AggregateQuerySnapshot snapshot = query.count().get().get();
System.out.println("Count: " + snapshot.getCount());
      
Node.js
const collectionRef = db.collection('cities');
const query = collectionRef.where('state', '==', 'CA');
const snapshot = await query.count().get();
console.log(snapshot.data().count);
      

ক্লাউড ফায়ারস্টোর সুরক্ষা নিয়মগুলি নথিগুলি ফেরত দেওয়া সাধারণ প্রশ্নগুলির মতোই count() একত্রিতকরণ প্রশ্নের ক্ষেত্রে একই কাজ করে৷ অন্য কথায়, যদি এবং শুধুমাত্র যদি আপনার নিয়মগুলি ক্লায়েন্টদের নির্দিষ্ট সংগ্রহ বা সংগ্রহের গ্রুপ প্রশ্নগুলি চালানোর অনুমতি দেয়, ক্লায়েন্টরাও সেই প্রশ্নগুলির উপর count() একত্রীকরণ সম্পাদন করতে পারে। ক্লাউড ফায়ারস্টোর সুরক্ষা নিয়মগুলি প্রশ্নের সাথে কীভাবে ইন্টারঅ্যাক্ট করে সে সম্পর্কে আরও জানুন৷

সীমাবদ্ধতা

count() একত্রীকরণ প্রশ্নে নিম্নলিখিত সীমাবদ্ধতাগুলি নোট করুন:

  • count() সমষ্টিগত প্রশ্ন বর্তমানে শুধুমাত্র সরাসরি সার্ভার প্রতিক্রিয়ার মাধ্যমে সমর্থিত। স্থানীয় ক্যাশে এবং বাফার করা আপডেটগুলি এড়িয়ে গিয়ে শুধুমাত্র ক্লাউড ফায়ারস্টোর ব্যাকএন্ড দ্বারা প্রশ্নগুলি পরিবেশন করা হয়। এই আচরণটি ক্লাউড ফায়ারস্টোর লেনদেনের মধ্যে সম্পাদিত ক্রিয়াকলাপের অনুরূপ। আপনি বর্তমানে রিয়েল-টাইম শ্রোতা এবং অফলাইন প্রশ্নগুলির সাথে count() প্রশ্নগুলি ব্যবহার করতে পারবেন না৷

  • যদি একটি count() সমষ্টি 60 সেকেন্ডের মধ্যে সমাধান করতে না পারে, তাহলে এটি একটি DEADLINE_EXCEEDED ত্রুটি প্রদান করে৷ কর্মক্ষমতা আপনার সূচক কনফিগারেশন এবং ডেটাসেটের আকারের উপর নির্ভর করে।

    যদি অপারেশনটি 60 সেকেন্ডের সময়সীমার মধ্যে সম্পন্ন করা না যায়, তাহলে একটি সম্ভাব্য সমাধান হল বড় ডেটা সেটের জন্য কাউন্টার ব্যবহার করা।

  • count() সমষ্টি সূচী এন্ট্রি থেকে পড়ে এবং শুধুমাত্র সূচীকৃত ক্ষেত্র গণনা করে।

  • ক্যোয়ারীতে একটি OrderBy ক্লজ যোগ করা সত্তার সংখ্যাকে সীমিত করে যেখানে বাছাই করার সম্পত্তি বিদ্যমান।

মূল্য নির্ধারণ

Count count() এর মূল্য নির্ভর করে ক্যোয়ারী দ্বারা মিলিত সূচক এন্ট্রির সংখ্যার উপর। প্রচুর সংখ্যক মিলে যাওয়া এন্ট্রির জন্য আপনাকে অল্প সংখ্যক পড়ার জন্য চার্জ করা হয়।

আরো বিস্তারিত মূল্য তথ্য দেখুন.