MongoDB对数组里面的对象里的数组进行增加,删除

本文介绍了如何使用MongoDB的update方法进行数组元素的添加和删除操作。通过示例展示了如何向`schedules`数组内的每个`guards`子数组中添加值,以及如何删除值为特定值的`guards`元素。更新操作包括使用`$push`添加元素和`$pull`删除元素,同时提到了`$[]`和`$`的区别以及如何修改单条或多条数据。
摘要由CSDN通过智能技术生成

我的数据库部分长这样

{

        name:'bonny',

        points:[{},{},{}],

        schedules:[

                {

                        guards:[],

                        identity:'',

                        name:'',

                        startAt:'',

                        repeat:''

                },

                {

                        guards:[],

                        identity:'',

                        name:'',

                        startAt:'',

                        repeat:''

                },

],

}

简单的说我需要将{ schedules:[ { guards:[111 ] }, { guards:[111 ] },{ guards:[111 ] }]},

变成{ schedules:[ { guards:[111,222 ] }, { guards:[111,222 ] },{ guards:[111,222 ] }]},

一.增加值(往数组里的对象里的数组添加值)

现在,我需要往schedules这个数组里面的每一个对象里的guards这个数组添加值,语句为:

db.getCollection('patrols').update({name:'ME Camera Room'},{$push:{'schedules.$[].guards':'1001844'}})

其中需要注意的是:

1.getCollection('patrols')可以直接写成patrols,也就是你要修改的表名。

2.update支持修改一条数据和多条数据,默认修改一条数据,如果要修改多条数据的话,则要多加一个true,也就是写成下面👇🏻这样。如果只想修改一条数据也可以将update改成updateOne,想修改多条数据时,update可以写成updateMany。updateOne和updateMany就不需要加true。

db.getCollection('patrols').update({name:'ME Camera Room'},{$push:{'schedules.$[].guards':'1001844'}},true)

3. $[]会循环完整个schedules数组,如果把$[]改为$则只会修改schedules数组的第一个对象里面的guards数组。当然如果你只想往schedules数组里面指定的下标里面的guards添加值,则可以把$换为指定的数组下标。

二.删除(删除数组里的对象里的数组里的指定值)

要删除schedules里的每一个对象里面的值为1001844的guards:

db.getCollection('patrols').update({name:'ME Camera Room'},{$pull:{'schedules.$[].guards':'1001844'}})

就是将上面的push改成了pull。

以上为本人在实践时遇到的问题,然后经过多番百度之后得到的解决办法,仅供参考,如有错误欢迎大家在评论区一起讨论~让我们一起变强到MongoDB唯我独尊吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bonny雨曦

码字不易,多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值