দিয়ে প্রতিস্থাপন করুন

বর্ণনা

বিদ্যমান ডকুমেন্টের ফিল্ডগুলোকে একটি প্রদত্ত এক্সপ্রেশনের ফিল্ড দ্বারা প্রতিস্থাপন করে।

এক্সপ্রেশনটি একটি লিটারাল ম্যাপ অথবা এমন একটি এক্সপ্রেশন হতে পারে যা একটি ম্যাপে ইভ্যালুয়েট হয়। যদি প্রদত্ত কোনো এক্সপ্রেশন একটি ম্যাপে ইভ্যালুয়েট না হয়, তবে এই পর্যায়ে একটি এরর রিটার্ন করা হয়।

৩টি সমর্থিত মোড রয়েছে:

  • full_replace : প্রদত্ত এক্সপ্রেশনের ফলাফল দিয়ে সম্পূর্ণ ডকুমেন্টটি প্রতিস্থাপন করে, এবং এতে অন্তর্ভুক্ত নয় এমন ফিল্ডগুলো বাদ দেয়।
  • merge_overwrite_existing : এক্সপ্রেশনটিকে বিদ্যমান ডকুমেন্টের সাথে মার্জ করে এবং ডকুমেন্টের ফিল্ড ভ্যালুগুলোকে এক্সপ্রেশনের ভ্যালু দিয়ে ওভাররাইট করে।
  • merge_keep_existing : এক্সপ্রেশনটিকে বিদ্যমান ডকুমেন্টের সাথে মার্জ করে, এবং ডকুমেন্টে কোনো ফিল্ড ভ্যালু না থাকলে শুধুমাত্র সেটিই যোগ করে।

উদাহরণ

নিম্নলিখিত নথিগুলি দিয়ে একটি cities সংগ্রহ তৈরি করুন:

নোড.জেএস

await db.collection("cities").doc("SF").set({name: "San Francisco", population: 800000, location: {country: "USA", state: "California"}});
await db.collection("cities").doc("TO").set({name: "Toronto", population:  3000000, province: "ON", location: {country: "Canada", province: "Ontario"}});
await db.collection("cities").doc("NY").set({name: "New York", location: {country: "USA", state: "New York"}});
await db.collection("cities").cov("AT").set({name: "Atlantis", population: null});

ডকুমেন্টের একটি পরিবর্তিত সংস্করণ পেতে full_replace মোড ব্যবহার করা।

অন্যান্য সমস্ত ডেটা বাদ দিয়ে নেস্টেড location ফিল্ডটি এক্সট্র্যাক্ট করুন:

নোড.জেএস
  const names = await db.pipeline()
    .collection("/cities")
    .replace_with(Field.of("location"), "full_replace")
    .execute();
    
জাভা
Pipeline.Snapshot names =
    firestore.pipeline().collection("cities").replaceWith(field("location")).execute().get();
যান
snapshot := client.Pipeline().
	Collection("cities").
	ReplaceWith(firestore.FieldOf("location")).
	Execute(ctx)

যা নিম্নলিখিত নথিগুলি তৈরি করে:

{ country: "USA", state: "California" },
{ country: "Canada", province: "Ontario" },
{ country: "USA", state: "New York" },
{ }

ফিল্ড সেট করতে merge_overwrite_existing মোড ব্যবহার করা

সমস্ত ডকুমেন্টের population ফিল্ডের মান ০-তে সেট করুন, যা বিদ্যমান মানগুলিকে মুছে দেবে:

নোড.জেএস
  const censoredResults = await db.pipeline()
    .collection("/cities")
    .replace_with(map("population", 0), "merge_overwrite_existing")
    .execute();
    

যা নিম্নলিখিত নথিগুলি তৈরি করে:

{name: "San Francisco", population: 0, location: {country: "USA", state: "California"}},
{name: "Toronto", population: 0, province: "ON", location: {country: "Canada", province: "Ontario"}},
{name: "New York", population: 0, location: {country: "USA", state: "New York"}},
{name: "Atlantis", population: 0}

ডিফল্ট মান যোগ করতে merge_keep_existing মোড ব্যবহার করা হচ্ছে

ডকুমেন্টে location উল্লেখ না থাকলে তার জন্য একটি ডিফল্ট মান নির্ধারণ করা:

নোড.জেএস
  const defaultedResults = await db.pipeline()
    .collection("/cities")
    .replace_with(map("location", "unknown"), "merge_keep_existing")
    .execute();
    

যা নিম্নলিখিত নথিগুলি তৈরি করে:

{ name: "San Francisco", population: 800000, location: { country: "USA", state: "California" } },
{ name: "Toronto", province: "ON", population: 3000000, location: { country: "Canada", province: "Ontario" } },
{ name: "New York", location: { country: "USA", state: "New York" } },
{ name: "Atlantis", population: null, location: "unknown" }