Mongo学习笔记——数组操作

本文深入探讨MongoDB中数组操作的方法,包括如何使用$push和$addToSet添加元素,$pop和$pull进行删除,以及利用$定位操作符进行部分更新。通过具体示例,清晰展示每种操作的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mongo学习笔记——数组操作

在MongoDB中,数据被存储为一个文档,数据结构有键值对组成。在文档中可以存储一个Object数组,本次就来了解如何对此类数组进行操作。

现有数据如下:
在这里插入图片描述

以上是一个个人信息文档,而一个人可以学到的技能是会变化的。当需要增加一个技能:

db.getCollection('applicant').update({"_id" : ObjectId("5ba993cc929a972684cdb2a5")},{$push:{"skill":{"skill_exp":"了解","skill_name":"C"}}})

在这里插入图片描述
$push的作用就是向已有的数组加入一个元素,不过push是不会检查是否有重复数据的,所以如果用push多次增加,相同的数据也会被重复存储。若是想要避免这种现象,就需要使用 $addToSet。

db.getCollection('applicant').update({"_id" : ObjectId("5ba993cc929a972684cdb2a5")},{$addToSet:{"skill":{"skill_exp":"了解","skill_name":"C"}}})

结果如下:
在这里插入图片描述
并没有出现多个C的技能描述。

而在对数组进行删除操作时,也有两种方式,分别是$pop和 $pull。
$pop:

db.getCollection('applicant').update({"_id" : ObjectId("5ba993cc929a972684cdb2a5")},{$pop:{"skill":1}})

$pull:

db.getCollection('applicant').update({"_id" : ObjectId("5ba993cc929a972684cdb2a5")},{$pull:{"skill":{"skill_exp":"了解","skill_name":"C"}}})

结果如下:
在这里插入图片描述
这两者的区别在于$pop是在数组的尾部与头部进行删除,而 $pull则是进行匹配删除(注意:pull不是只删除一条,他会删除所有匹配的元素)。

当需要对数组的部分值进行更新,则需要使用定位操作符:$

db.getCollection('applicant').update({$and:[{"_id" : ObjectId("5ba993cc929a972684cdb2a5")},{"skill.skill_name" : "C#"}]},{$set:{"skill.$.skill_exp":"熟悉"}})

结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值