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.

Create a Mobile Website
View Site in Mobile | Classic
Share by: