Remove Fields (Transformation Stage)
Description
Remove fields from the documents produced by the previous stage.
The generated documents will contain all fields from the previous stage except for the fields specified to be removed.
Syntax
Node.js
const
results
=
await
db
.
pipeline
()
.
collection
(
"/cities"
)
.
removeFields
(
'population'
,
'location.state'
)
.
execute
();
Client examples
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
Android
val results = db . pipeline () . collection ( "cities" ) . removeFields ( "population" , "location.state" ) . execute ()
Java
Android
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 ();
Behavior
Remove Nested Fields
The remove_fields
stage respects nested field syntax, and will remove keys from a map.
For example, to remove the nested state field from the dataset:
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'
}});
The following pipeline can be used:
Node.js
const
results
=
await
db
.
pipeline
()
.
collection
(
"/cities"
)
.
removeFields
(
'location.state'
)
.
execute
();
Which produces the following documents:
{
name
:
'San Francisco'
,
location
:
{
country
:
'USA'
}}
{
name
:
'Toronto'
,
location
:
{
country
:
'Canada'
,
province
:
'Ontario'
}}
Removal of elements within an array is unsupported.
Remove on Non-Existent Fields
If a nested or top-level field given to remove_fields
does not exist in a document, the stage won't edit the document for that field. Other existing fields will still be removed.

