mongodb更新操作符$rename

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字段, 然后再调用 unsetbook,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'}})

猜你喜欢

转载自blog.csdn.net/ice_stone_kai/article/details/123216270