mycode
:
db.person.find()
//对zs的字段名修改为了myname
db.person.update({
name:'zs'},{
$rename:{
name:'myname'}})
//注意:如果修改的是文档字段中的字段,那么取值必须写上层级关系
db.person.update({
name:'ww'},{
$rename:{
'book.name':'book.bookname'}})
//如果要操作的字段不存在,那么不会进行任何操作
//注意:如果重命名之后的名称已经存在,那么之前已经存在的字段会被删除
//底层的本质:先调用 u n s e t 删 除 原 有 的 重 名 字 段 , 再 调 用 unset删除原有的重名字段,再调用 unset删除原有的重名字段,再调用set设置新的字段
//注意:不能通过$rename更新操作符来操作数组
db.person.insertOne({
name:'it666',age:66,book:{
name:'zs',price:99},tags:[{
name:'html',price:'132'},{
name:'js',price:'465'}]})
db.person.updateOne({
name:'it666'},{
$rename:{
'tags.0.name':'tags.0.TagName'}})
//不要用$rename操作数组
//可以将外层的文档转移到内层
db.person.updateOne({
name:'it666'},{
$rename:{
age:'book.age'}})
//也可以将内层的文档转移到外层
db.person.updateOne({
name:'it666'},{
$rename:{
'book.age':'age'}})
teacher's code
1.$rename更新操作符
KaTeX parse error: Expected '}', got 'EOF' at end of input: …e: 重命名字段 格式 :{
rename:{:, …}}
2.示例
db.person.update({
name:'zs'}, {
$rename:{
name:'MyName'}})
// 注意点: 如果修改的是文档字段中的字段, 那么取值必须写上层级关系
db.person.update({
name:'ww'}, {
$rename:{
'book.name':'book.BookName'}})
// 注意点: 如果要操作的字段不存在, 那么不会做任何的操作
db.person.update({
name:'ls'}, {
$rename:{
age:'MyAge'}})
// 注意点: 如果重命名之后的名称已经存在了, 那么已经存在的字段就会被删除
// 底层的本质: 先调用了 u n s e t 删 除 了 原 有 的 b o o k 字 段 , 然 后 再 调 用 unset删除了原有的book字段, 然后再调用 unset删除了原有的book字段,然后再调用set修改字段的名称
db.person.update({
name:'ww'}, {
$rename:{
name:'book'}})
// 注意点: 不能通过$rename更新操作符来操作数组
db.person.insert(
{
name:'it666',
age:666,
book:{
name:'知播渔', price:999},
tags:[{
name:'html', price:'123'}, {
name:'js', price:456}]
}
)
db.person.update({
name:'it666'}, {
$rename:{
'tags.0.name':'tags.0.TagName'}})
4.乾坤大挪移
// 可以将外层的字段转移到内层的文档中
db.person.update({
name:'it666'}, {
$rename:{
age:'book.age'}})
db.person.find()
// 可以将内存文档中的字段, 转移到外层文档中
db.person.update({
name:'it666'}, {
$rename:{
'book.age':'age'}})