MongoDB原生语句更新嵌套数组的值

一、更新一层嵌套数组

首先执行MongoDB原生语句脚本在user集合中产生一些样本数据,如下所示:

db.user.insert({"_id":1,"title":"爱情公寓3","students":[{"student_id":1001,"student_name":"林宛瑜"},{"student_id":1002,"student_name":"陆展博"}]});
db.user.insert({"_id":2,"title":"爱情公寓4","students":[{"student_id":2001,"student_name":"吕子乔"},{"student_id":2002,"student_name":"张伟"}]});

如果想将吕子乔修改为曾小贤,则可以执行下述脚本进行数据更新:

db.user.updateMany(
    {'students.student_id':2001},
    {$set:{'students.$.student_name':'曾小贤'}}
);

这时再次查看user集合,可以看到数据已经更新:

此处使用了$符号,$符号表示的是一个占位符,代表被匹配的数组中的一个元素对象。

执行下述脚本,更新嵌套数组中多个字段的值也是可以的: 

db.user.updateMany(
    {'students.student_id':2001},
    {$set:
        {'students.$.student_id':20001,
        'students.$.student_name':'胡一菲'}
    }
);

执行下述脚本,将嵌套数组中student_name的字段类型由字符串更改为数组

db.user.updateMany(
    {'students.student_id':20001},
    {$set:
        {'students.$.student_name':['陈美嘉','关谷神奇']}
    }
);

如果还想将陈美嘉修改为Lisa榕,很容易就会想到执行下述脚本进行数据更新:

db.user.updateMany(
    {'students.student_name':'陈美嘉'},
    {$set
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值