MongoDB - 重命名运算符 ($rename)
MongoDB 提供了不同类型的字段更新运算符来更新文档字段的值, $rename运算符就是其中之一。此运算符用于使用新名称更新字段的名称。字段的新名称应与字段的现有名称不同。
- $rename运算符在逻辑上首先对旧名称和新名称执行 $unset 操作,然后对新名称执行
$set
操作。 - 如果文档包含具有新名称的字段,则此运算符将删除该字段并将指定字段重命名为新名称。
- 此运算符还可以处理嵌入/嵌套文档或数组。在嵌入/嵌套文档中,此运算符可以重命名指定字段以及将字段移入和移出嵌入文档
- 您可以根据需要在 update()、findAndModify() 等方法中使用此运算符。
- 如果指定的重命名字段不可用,则此运算符将不执行任何操作。
句法:
{$rename: {:, :, ... } }
此处, newName是新名称,它必须与字段的现有名称不同。借助点符号指定嵌入/嵌套文档中的字段。
在以下示例中,我们正在使用:
Database: GeeksforGeeks
Collection: Employee
Document: three documents that contain the details of the employees in the form of field-value pairs.
重命名单个文档中的字段:
在此示例中,我们将experienceYear 字段的名称重命名为名字为Amu 的员工文档中的experience。
db.Employee.update({"name.first": "Amu"},
{$rename: {"experienceYear":"experience"}})
重命名多个文档中的字段:
在此示例中,我们将 Employee 集合中存在的所有文档中的部门字段的名称重命名为 unit。
db.Employee.updateMany({}, {$rename: {"department":"unit"}})
重命名嵌套/嵌入文档中的字段:
在此示例中,我们将 PersonalDetails.contactInfo 的名称重命名为名为 Sumit 的员工的嵌入/嵌套文档中的 PersonalDetails.phoneNumber 字段。
db.Employee.update({"name.first": "Sumit"},
{$rename: {"personalDetails.contactInfo":"personalDetails.phoneNumber"}})