Xoá trường

Mô tả

Xoá các trường khỏi tài liệu do giai đoạn trước tạo ra.

Tài liệu được tạo sẽ chứa tất cả các trường từ giai đoạn trước, ngoại trừ các trường được chỉ định xoá.

Ví dụ

Node.js
const results = await db.pipeline()
  .collection("cities")
  .removeFields("population", "location.state")
  .execute();

Web

const results = await execute(db.pipeline()
  .collection("cities")
  .removeFields("population", "location.state"));
Swift
let results = try await db.pipeline()
  .collection("cities")
  .removeFields(["population", "location.state"])
  .execute()

Kotlin

val results = db.pipeline()
    .collection("cities")
    .removeFields("population", "location.state")
    .execute()

Java

Task<Pipeline.Snapshot> results = db.pipeline()
        .collection("cities")
        .removeFields("population", "location.state")
        .execute();
Python
results = (
    client.pipeline()
    .collection("cities")
    .remove_fields("population", "location.state")
    .execute()
)
Java
Pipeline.Snapshot results =
    firestore
        .pipeline()
        .collection("cities")
        .removeFields("population", "location.state")
        .execute()
        .get();

Hành vi

Xoá các trường lồng nhau

Giai đoạn remove_fields(...) tuân theo cú pháp trường lồng nhau và sẽ xoá các khoá khỏi một bản đồ.

Ví dụ: để xoá trường trạng thái lồng nhau khỏi tập dữ liệu:

Node.js

await db.collection("cities").doc("SF").set({name: "San Francisco", location: {country: "USA", state: "California"}});
await db.collection("cities").doc("TO").set({name: "Toronto", location: {country: "Canada", province: "Ontario"}});

Bạn có thể sử dụng quy trình sau:

Node.js

const results = await db.pipeline()
  .collection("/cities")
  .removeFields("location.state")
  .execute();

Điều này tạo ra các tài liệu sau:

{ name: "San Francisco", location: { country: "USA" } }
{ name: "Toronto", location: { country: "Canada", province: "Ontario" } }

Hệ thống không hỗ trợ việc xoá các phần tử trong một mảng.

Xoá trên các trường không tồn tại

Nếu một trường lồng nhau hoặc trường cấp cao nhất được cung cấp cho remove_fields(...) không tồn tại trong một tài liệu, thì giai đoạn này sẽ không chỉnh sửa tài liệu cho trường đó. Các trường hiện có khác vẫn sẽ bị xoá.