Felder entfernen

Beschreibung

Entfernt Felder aus den Dokumenten, die in der vorherigen Phase erstellt wurden.

Die generierten Dokumente enthalten alle Felder aus der vorherigen Phase, mit Ausnahme der Felder, die entfernt werden sollen.

Beispiele

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();
Go
snapshot := client.Pipeline().Collection("cities").
	RemoveFields(firestore.Fields("population", "location.state")).
	Execute(ctx)

Verhalten

Verschachtelte Felder entfernen

In der Phase remove_fields(...) wird die Syntax für verschachtelte Felder berücksichtigt und es werden Schlüssel aus einer Map entfernt.

Wenn Sie beispielsweise das verschachtelte Feld „state“ aus dem Dataset entfernen möchten:

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"}});

Die folgende Pipeline kann verwendet werden:

Node.js

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

Dadurch werden die folgenden Dokumente erstellt:

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

Das Entfernen von Elementen in einem Array wird nicht unterstützt.

Entfernen bei nicht vorhandenen Feldern

Wenn ein verschachteltes oder Feld der obersten Ebene, das an remove_fields(...) übergeben wird, in einem Dokument nicht vorhanden ist, wird das Dokument für dieses Feld in der Phase nicht bearbeitet. Andere vorhandene Felder werden weiterhin entfernt.