• mongoDB4--mongoDB的增删改查


    MongoDb基本操作之增删改查

    我们知道传统关系型数据库的最常用操作就是“增加/删除/修改/查询”,也就是
    传说中的CRUD(create/remove/updte/delete)。

    在学习mongodb的时候,我们也是从CRUD操作入手。

    我们首先创建一个库,名称为test:


    创建一个student表:


    1.新增操作
    (1)增加单篇文档(db.CollectionName.insert({json数据}))
    我们为school表插入一条数据:

    mongo会为每一行数据定义一个_id主键,想改变这个主键就手动指定即可:


    (2)一次性增加多条数据(使用[{},{},{}...])
    json是一个对象,有数组这个概念,
    只需要把多个队形放到一个数组里面插入,就能实现批量添加。

    注意:json中的数组就是“[]”中括号来组成的。

    2.删除操作
    (1)删除表中一条数据(db.CollectionName.reomve({删除条件,选项}))
    我们删除student表中code属性值为'004'的数据:


    注意:
    1.查询表达式依然是个json对象
    2.查询表达式匹配的行,将被删掉
    3.如果不写查询表达式,Collection中的所有文档将被删掉

    我们多插入几个信息:

    插入了两个男士的信息和两个女士的信息。

    我们删除所有的女士,可以在删除条件中制定sex:'women'即可删除:


    (2)删除选项
    我们可以在删除条件后面加一个选项,意思是(justOne:true/false),是否
    只删除一行。默认为false。

    下面我们删除两个男士,在后面加一个“true”,发现就只删除一行符合条件
    的信息:



    3.修改
    改谁? --查询表达式
    改成什么样?  --新值 或 赋值表达式
    操作选项 --可选参数

    (1)修改文档的信息(db.CollectionName.update({老参数},{新参数}))
    我们把name为tom的人的姓名改为“tomSmith”


    发现名字属性确实修改掉了,但是我们要注意,tom这个文档的其它属性
    全部没有了!

    其实很好解释,“{}”大括号中一般代之一个整个文档,所以,当我们制定
    某个参数对应的文档的新信息的时候,修改的是整个文档。

    如果我们要修改某一个参数,而又不想改变文档中的其它数据呢?我们
    可以使用“set”赋值表达式来修改。

    (2)修改文档的某个属性(db.CollectionName.update({老参数},{$Set:{新参数}}))
    我们把name为jack的人的姓名改为“jackson”


    我们可以发现只修改了name,其它属性没有被影响。

    (3)修改时的赋值表达式
    $set 修改某列的值
    $unset 删除某个列
    $rename 重命名某个列
    $inc 增长某个列

    我们下面举个例子来说明这些参数。

    例子1:
    首先我们创建一个文档信息,里面是一个人的信息。
    这是一个女学生,没有银行卡,目前只有100元钱。

    女学生大学毕业之后,变成了一个商人,我们要把她的角色信息
    改为“商人(BusinessMan)”,使用$set修改;然后她有钱了,
    就把她的“无银行卡”这个属性删除,使用$unset;
    女孩挣了1000000万,要加在之前的钱数上面,使用$incr;
    女孩嫌弃sex属性不好听,花钱改成了“gender(性别)”,使用$rename。


    (4)修改选项
    {upsert:true/false,multi:true/false}
    Upsert是指没有匹配的行,则直接插入该行(和mysql中的replace一样)
    multi是修改多行(默认是false,修改一行)。

    例:

    没有_id为99的文档,所以就直接插入该文档

    例:

    db.student.update({gender:'man'},{gender:'women'},{multi:true});
    把所有的gender为"man"的人全部改为"women"。

    说了上面两个选项,补充一下一个赋值表达式“$setOnInsert”,意思是
    当upsert为true时,因为没有该文档而导致发生了insert操作时,
    可以补一些字段。

    假设我们更新code为066的文档(数据库中没有,会发生insert操作),我们可以
    使用$setOnInsert在发生insert的时候补充属性:



    4.查询
    语法:db.CollectionName.find(查询表达式,查询的列);
    db.CollectionName.find(表达式,{列1:1,列2:1,列3:0});
    即是,想显示的属性后面跟数字1,不想显示的后面跟数字0

    (1)查询所有文档
    db.CollectionName.find();

    (2)只查询某个属性(db.CollectionName.find({},{属性名}))
    查询所有文档中带有性别的人的信息:


    查询所有文档中带有性别的人的信息,且不查询id属性:


    以上就是mongodb的增删改查的所有操作。

    其实数据库的CRUD操作都离不开一个东西,就是“查询表达式”,也就是where/or/and/not等语句,这些在下一篇总结中向大家阐述。

  • 相关阅读:
    mysql 更改字符集
    修改pip源
    git命令
    virtualwrapper使用
    Python环境搭建
    IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
    Spring4:JDBC
    Spring3:AOP
    Spring2:bean的使用
    Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
  • 原文地址:https://www.cnblogs.com/gaochsh/p/6287654.html
Copyright © 2020-2023  润新知