تعدِّل مرحلة update(...) المستندات الحالية.
أمثلة
على سبيل المثال، تعيد العملية التالية ملء تغيير في نموذج البيانات لجميع المستندات في مجموعة مستندات. يضيف خط أنابيب حقل preferences.color إلى جميع المستندات في مجموعة مستندات users التي لا تتضمّن هذا الحقل.
Node.js
const snapshot = await db.pipeline() .collectionGroup("users") .where(not(exists(field("preferences.color")))) .addFields(constant(null).as("preferences.color")) .removeFields("color") .update() .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Constant, Field, Not snapshot = ( client.pipeline() .collection_group("users") .where(Not(Field.of("preferences.color").exists())) .add_fields(Constant.of(None).as_("preferences.color")) .remove_fields("color") .update() .execute() )
Java
Pipeline.Snapshot snapshot = firestore.pipeline() .collectionGroup("users") .where(not(exists(field("preferences.color")))) .addFields(constant((String) null).as("preferences.color")) .removeFields("color") .update() .execute().get();
Go
snapshot := client.Pipeline(). CollectionGroup("users"). Where(firestore.Not(firestore.FieldExists(firestore.FieldOf("preferences.color")))). AddFields(firestore.Selectables( firestore.ConstantOfNull().As("preferences.color"), )). RemoveFields(firestore.Fields("color")). Update(). Execute(ctx)
السلوك
يجب أن تأتي جميع مراحل لغة معالجة البيانات (DML) في نهاية خط الأنابيب.
يجب أن تتضمّن المستندات التي تدخل هذه المرحلة الحقل __name__ لتحديد المستندات التي يجب تعديلها. تفشل العملية إذا لم يكن أي من المستندات موجودًا.
تتضمّن معظم مراحل الإدخال (مثل collection(...) و
collection_group(...) و
database(...) و
documents(...)) الحقل __name__ تلقائيًا.
يمكنك اختياريًا تقديم transformations لتطبيقها قبل كتابة المستندات مباشرةً. تعمل هذه العمليات بشكل مطابق لإضافة
add_fields(...) قبل مرحلة الإخراج النهائية، ويتم تنفيذ
التعبيرات في سياق المستندات السابقة.
يتضمّن الردّ ملخصًا لعدد المستندات المعدَّلة. على سبيل المثال، يؤكّد الردّ التالي أنّ خط الأنابيب عدّل ثلاثة مستندات:
{documents_modified: 3L}
القيود
لا تتوافق مراحل لغة معالجة البيانات (DML) مع Cloud Firestore Security Rules. يتم رفض محاولات عمليات لغة معالجة البيانات (DML) من خلال Cloud Firestore Security Rules.
أثناء معاينة هذه الميزة، لا يمكنك تنفيذ مراحل لغة معالجة البيانات (DML) في عملية. لمزيد من المعلومات حول سلوك الاتساق، يُرجى الاطّلاع على مقالة الاتساق.
إذا أنتجت المرحلة التي تسبق مرحلة لغة معالجة البيانات (DML) مستندات متعددة لها
__name__نفسه، تتم معالجة كل مستند. بالنسبة إلىupdate(...)، يعني ذلك أنّه قد يتم تعديل المستند الهدف نفسه عدة مرات. بالنسبة إلىdelete(...)، لن يكون لأي محاولات لاحقة بعد المحاولة الأولى أي تأثير.