MongoDB对Document(文档)的插入、删除及更新

 更新时间:2022年07月08日 15:09:04   作者:奋斗的大橙子  
这篇文章介绍了MongoDB对Document(文档)的插入、删除及更新,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一.Document数据插入

1.插入文档

db.[文档名].insert({BSON数据})

2.批量插入文档

shell当中不支持批量插入,想完成批量插入操作,可以使用shell的for循环,或者其他高级语言当中的批量操作方法

例:使用for循环插入10个学生,在学生集合当中

我使用的是2.6的版本,发现已经支持了批量插入操作。

3.Save操作

save操作和insert操作的区别在于,save在遇到_id相同的插入数据时候,会覆盖原来的,而insert会提示错误

例子:

用insert的方法去插入一个_id相同的数据

二.Document数据删除

1.删除列表中所有数据

db.[文档名].remove({})

集合的本身和索引不会别删除

例子:删除列表中所有数据

2.根据条件删除

例: 删除_id为10的那条记录

三.Document数据更新

1.直接覆盖更新

db.[文档名].update({查询器},{修改器})

{查询器}就相当于是条件

{修改器}就是你要直接覆盖替换的BSON数据

例:更新_id为9,那个学生,把Name变成age

注意:当主键冲突的时候会报错并且停止更新操作

例:我用_id为8的数据,去替换_id为9的记录,因为_id为8的数据已经存在,不允许有两个主键为_id:8

的记录,所以会报错。

2.采用insertOrUpdate的做法进行更新

db.[文档名].update({查询器},{修改器},true)

后面第三个参数为true,就代表是当记录不存在的时候,就插入一条记录,如果存在就更新

例:更新一个_id为10的数据,没有就插入,有就更新

3.批量更新操作

db.[文档名].update({查询器},{修改器},false, true)

※默认情况当查询器查询出多条数据的时候默认就修改第一条数据

先修改一下数据如下:

让_id为9和10的数据,有相同的内容

再插入一个_id=11,age=20的数据

第四个参数不写的情况下去更新:

如下:只能更新第一个age=20的数据

第四个参数添加并且为true的时候,我们预期是10和11都能被修正

但是当我试图去更新的时候,报错了,提示说批量更新只能在有$操作的时候使用

修正插入语句

这里注意$set后面要有":",而且它和它后面的修改器要被{}包起来,因为我第一次使用mongoDB,所以总写错。

4.使用修改器来完成局部更新操作

$set它用来指定一个键值对,如果存在键就进行修改不存在则进行添加

{$set:{field:value}}

_id为10的数据,没有Name属性,进行了添加,有age键,就进行了修改

$inc

1.适用于数字类型

2.能够对键对应的数字类型数值进行加减操作

{$inc:{field:value}}

给age=30的数据增加2岁,由于没有使用批量更新参数,所以默认修正了第一条

$unset删除指定的键

{$unset:{field:1}}

我在例子里面先是删除了age=30的数据的age属性,但是有一点不明白,unset后面那个field:1是什么,于是我查了一下,说是后面是什么都无所谓,unset只看键不看value,于是又做了第二个例子

$push

1.如果指定的键是数组增追加新的数值

2.如果指定的键不是数组则中断当前操作,报错

3.如果不存在指定的键则创建数组类型的键值对

{$push:{field:value}}

$pushAll

用法同上,是批量添加数组数据的操作

{$pushAll:{field:array}}

1.第一个操作没有用$pushAll,所以把["C#","JAVA"]当成一个数组项目处理了

2.第二个操作使用了$pushAll,所以当成了两项来处理的。

$addToSet

往数组中添加项目,存在就不添加,不存在就添加(push不管存不存在都添加)

{$addToSet:{field:value}}

1.先用push插入,发现更新完成后有两个“C#”

2.再用addToSet更新,发现没有增加项目

$pop

从指定数组删除一个值1删除最后一个数值,-1删除第一个数值

{$pop:{field:value}}

1.删除最后一个索引位置的数据,后面的value用"1"

2.删除第一位置索引的数据,value=-1

$pull

push的逆向操作,删除键是数组的项目中的指定元素

{$pull:{field:value}}

$pullAll

批量删除数组中的指定元素

{$pullAll:{field:array}}

$ 数组定位器,如果数组有多个数值我们只想对其中一部分进行操作我们就要用到定位器($)

{$push:{field:value}}

1.实例第一个是在刚刚清空的数组里面添加了两个元素

2.我想在{“SubID”:1,"SubName":"MangoDB"}这个对象里面再添加"Teacher":"Lucy"

5.$addToSet与$each结合完成批量数组更新

理解:首先从上面的例子中我们知道,addToSet这个修改器,可以判断是否项目存在,不存在的时候就直接插入。

此时我有一个功能,例如我想往一个存在数据的数组中批量更新数据,如果存在就不更新。那么只使用addToSet是不能进行批量的,于是就要结合$each来实现。

例:

1.新创建一个文件,并使用pushAll修改器添加数据:

2.我想要批量插入"C#","PHP","JavaScript","JAVA",要求不能有重复的

如果这时候我直接用pushAll来进行更新的话,"C#"和"JAVA"就会有重复

在shell当中输入如下命令:

总结:以上就是MongoDB的Document的插入、删除以及更新的使用。

到此这篇关于MongoDB操作Document的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • 使用centos系统中的crontab命令对mongodb定时备份恢复

    使用centos系统中的crontab命令对mongodb定时备份恢复

    编写centos脚本使用crontab命令对mongodb定时执行备份与恢复操作,并删除指定天数前的备份
    2018-03-03
  • MongoDB中多表关联查询($lookup)的深入讲解

    MongoDB中多表关联查询($lookup)的深入讲解

    NoSql的多表关联一直是比较复杂的问题,下面这篇文章主要给大家介绍了关于MongoDB中多表关联查询($lookup)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-12-12
  • mongodb操作的模块手动封装

    mongodb操作的模块手动封装

    这篇文章主要介绍了mongodb操作的模块手动封装的相关资料,这里提供实例帮助大家实现这样的功能,需要的朋友可以参考下
    2017-08-08
  • MongoDB分片详解

    MongoDB分片详解

    本文分享了MongoDB分片详细介绍,分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用,
    2018-03-03
  • NoSQL优缺点与MongoDB数据库简介

    NoSQL优缺点与MongoDB数据库简介

    这篇文章介绍了NoSQL的优缺点与MongoDB数据库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Windows 10下安装最新版MongoDB的完整步骤

    Windows 10下安装最新版MongoDB的完整步骤

    这篇文章主要给大家介绍了关于在Windows 10下安装最新版MongoDB的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 详解mongoDB主从复制搭建详细过程

    详解mongoDB主从复制搭建详细过程

    这篇文章主要介绍了详解mongoDB主从复制搭建详细过程的相关资料,这里对实现主从复制进行了详细的步骤介绍,需要的朋友可以参考下
    2017-08-08
  • MongoDB设计方法以及技巧示例详解

    MongoDB设计方法以及技巧示例详解

    这篇文章主要给大家介绍了关于MongoDB设计方法以及技巧的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • mongodb 数据库操作详解--创建,切换,删除

    mongodb 数据库操作详解--创建,切换,删除

    mongodb是nosql里面最像关系型数据库的数据库。单表操作,基本上可以和关系型数据库差不多。mongodb比较易学,易用,分几期记录一下,学习和使用mongodb过程。
    2014-07-07
  • Mongodb数据库误删后的恢复方法(两种)

    Mongodb数据库误删后的恢复方法(两种)

    本文给大家分享两种方法来实现Mongodb数据库误删后的恢复,每种方法给大家介绍的都非常详细,需要的朋友参考下吧
    2018-08-08

最新评论

?


http://www.vxiaotou.com