$rename

Renames fields in documents during update operations, removing the old field name and creating a new field with the same value.

Syntax

{ $rename: { <field1>: <newName1>, <field2>: <newName2> } }

Parameters

fieldstringrequired

The current name of the field to be renamed

newNamestringrequired

The new name for the field

Examples

Rename top-level fields

Rename name field to storeName and location to storeLocation

Query:

db.stores.updateOne({ "_id": "store-001" }, { $rename: { "name": "storeName", "location": "storeLocation" } })

Output:

Renames specified fields while preserving their values

Rename nested fields

Rename nested fields using dot notation

Query:

db.stores.updateOne({ "_id": "store-001" }, { $rename: { "location.lat": "location.latitude", "location.lon": "location.longitude" } })

Output:

Renames nested coordinate fields to more descriptive names

Restructure field naming

Update field names to follow new naming conventions

Query:

db.stores.updateOne({ "_id": "store-001" }, { $rename: { "staff.totalStaff.fullTime": "staff.totalStaff.fullTimeEmployees" } })

Output:

Updates field name to more descriptive convention

Bulk rename operations

Rename fields across multiple documents using updateMany

Query:

db.stores.updateMany({}, { $rename: { "sales.totalSales": "sales.revenue", "staff.totalStaff": "staff.employeeCount" } })

Output:

Applies field name changes across all documents in collection

Related