一、前文回顾
上一篇文章中我们学习了更新操作,以及讲解了部分的更新操作符,今天我们继续学习剩余的更新操作符。
二、更新操作符
1、$rename
语法:{ $rename: { < field1 >: < newName1 >, < field2 >: < newName2 >, … } }
含义:用于修改字段名称,类似于MySQL中DDL
示例1:例如我们要将库存集合(inventory)中的 qyt字段名称改成 quantity
db.inventory.updateMany({}, {$rename :{"qty":"quantity"}})
运行结果:
当然这里也可以只给一条文档修改字段名。
示例2:给修改嵌套文档的字段名
例如我们size文档下的h名称改为 height
db.inventory.updateMany({}, {$rename :{"size.h":"size.hight"}})
运行结果:
示例3:将内嵌文档中的字段移到文档外部
例如我们想把size下的uom字段移动到内嵌元素的外部,我们也可以使用rename命令
db.inventory.updateMany({}, {$rename :{"size.uom":"uom"}})
运行结果:
注意点:rename不适用于不适用于数组中的嵌入式文档
2、$set
语法:{ $set: { < field1 >: < value1 >, … } }
含义:设置文档中字段的值,就类似于Mysql中的 update table set = xxxx
示示1:将ID=66951edbdf24000083007d74 的文档的quantity设置为100
db.inventory.updateOne({"_id":ObjectId("66951edbdf24000083007d74")},{ $set:{"quantity":100} })
运行结果:
示例2:set一个不存在的字段值
例如我给ID为66951edbdf24000083007d74的元素添加一个字段价格 Price,为200,此时也可以用set
db.inventory.updateOne({"_id":ObjectId("66951edbdf24000083007d74")},{ $set:{"price":200} })
运行结果
同理如果要设置嵌套文档,则使用 “点符号”,这里不在赘述。
3、$unset
语法:{ $unset: { < field1 >: “”, … } }
含义:删除特定字段。
示例1:我想删除66951edbdf24000083007d74的文档的price字段
db.inventory.updateOne({"_id":ObjectId("66951edbdf24000083007d74")},{ $unset:{"price":""} })
运行结果:
同理如果是嵌套文档则需要用“点符号。
三、结束语
Mongo中还有许多的操作符,这里不在一一赘述,一切要以官网为准,这里贴上官网的地址:https://www.mongodb.com/zh-cn/docs/manual/reference/operator/update/#std-label-update-operators。
希望对你有所帮助