📜  MongoDB - 重命名运算符 ($rename)

📅  最后修改于: 2022-05-13 01:56:58.150000             🧑  作者: Mango

MongoDB - 重命名运算符 ($rename)

MongoDB 提供了不同类型的字段更新运算符来更新文档字段的值, $rename运算符就是其中之一。此运算符用于使用新名称更新字段的名称。字段的新名称应与字段的现有名称不同。

  • $rename运算符在逻辑上首先对旧名称和新名称执行 $unset 操作,然后对新名称执行$set操作。
  • 如果文档包含具有新名称的字段,则此运算符将删除该字段并将指定字段重命名为新名称。
  • 此运算符还可以处理嵌入/嵌套文档或数组。在嵌入/嵌套文档中,此运算符可以重命名指定字段以及将字段移入和移出嵌入文档
  • 您可以根据需要在 update()、findAndModify() 等方法中使用此运算符。
  • 如果指定的重命名字段不可用,则此运算符将不执行任何操作。

句法:

{$rename: {:, :, ... } }

此处, newName是新名称,它必须与字段的现有名称不同。借助点符号指定嵌入/嵌套文档中的字段

在以下示例中,我们正在使用:

重命名单个文档中的字段:

在此示例中,我们将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"}})