MongoDB数据库学习笔记(二)

MongoDB的基本操作

一、MongoDB的基本概念

1. 文档(Document)
        文档是MongoDB数据库中的最小单位,是我们存储和操作的内容,类似于JS中的一个对象。在MongoDB中每一条数据都是一个文档
2. 集合(Collection)
        集合类似于数组,是用来存放文档的,简单来说集合就是一组文档;集合中存储的文档可以是各种各样的,没有格式要求
3. 数据库(Database)
        数据库是一个仓库,是用来存放集合的,简单来说多个集合就是一个数据库。我们可以根据项目需要创建多个不同的数据库。一个数据库服务器中可以有N个数据库
总结:一个MongoDB数据库服务器中可以放多个数据库,一个数据库中可以放多个集合,一个集合中可以放多个文档。MongoDB服务器、数据库、集合、文档四者之间的关系如下图:
在这里插入图片描述

二、MongoDB的cmd使用步骤

        由于MongoDB4.0以后的版本都将其数据库服务器设置为自启动了,所以不需要在使用mongod来打开数据库服务器了,我们只要在cmd中输入mongo命令就可以登录进MongodDB的客户端对数据库中的数据进行操作。

1.登录MongoDB客户端

  1. 命令:mongo

在这里插入图片描述
        输入mongo命令后回车出现了>就说明客户端和服务器连接成功,进入了MongoDB的shell,可以直接在该shell中写JS代码,操作数据库中的数据。

2.显示当前数据库服务器中所有的数据库

  1. 命令:show dbs 或者 show databases
  2. 在mongoDB shell中输入上面命令中的一个后回车,可以查看当前服务器下的所有数据库在这里插入图片描述
  3. 如上图所示,在本机的数据库服务器下一共有三个数据库,分别是admin config local my_test,同时列出了他们的大小

3.进入到指定的数据库中

        在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在时会自动创建数据库和集合;即就算数据库和集合都没有创建,我们依然可以进入其中,但是只有在里面创建了文档该数据库和集合才存在,否则他们实际上并不存在

  1. 命令:use 数据库名
  2. 命令:db 表示当前所处的数据库

4.显示数据库中所有的集合

  1. 命令:show collections
    在这里插入图片描述
            进入指定的数据库后输入以上命令回车即可获得该数据库下所有的集合。

4.数据库的CRUD(增删改查)操作

  • 向数据库中插入文档
    1、命令1(插入一个文档或多个文档):
                     use 数据库名
                     db.集合名.insert(doc\docArray);
    2、命令2(插入一个文档):
                     use 数据库名
                     db.集合名.insertOne(doc);
    3、命令3(插入一组文档):
                     use 数据库名
                     db.集合名.insertMany(docArray);

    4、举例:向test数据库中的stus集合中插入一个新的学生对象(一个学生对象就是一个文档),首先要使用:use test 命令进入到test数据库中,然后使用命令:db.stus.insert({“name”:“孙悟空”,“age”:“18”});
    5、向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动调用ObjectId()函数生成一个唯一的id标识符作为文档的_id属性值,该属性用来作为文档的唯一标识符,确保数据的唯一性,只要标识符不同,就可以认为文档不同。_id属性值也可以自己指定,如果自己指定了,系统就不会再进行添加了,但是自己指定时,也必须确保它的唯一性。所以一般不建议自己指定。

在这里插入图片描述

  • 删除数据中的文档
    1、命令1(删除符合条件的所有文档或第一个文档):
                     use 数据库名
                     db.集合名.remove(条件对象);
             remove()函数默认情况下会删除所有符合条件的文档,如果传入第二个人参数为true,则只删除符合条件的第一个文档。remove必须传递参数,否则会报错。如果只传递一个空对象{}作为参数,则集合中所有的数据都将被清空,但是采用该种方法来清空数据库性能较差,因为他会先进行匹配,然后再删除
    2、命令2(删除符合条件的一个文档):
                     use 数据库名
                     db.集合名.deleteOne(条件对象);
    3、命令3(删除一组文档):
                     use 数据库名
                     db.集合名.deleteMany(条件对象);
                     db.集合名.drop();
    4、命令4(删除一个集合):
                     use 数据库名
                     db.集合名.drop();
  • 修改数据库中的文档
    1、命令:use 数据库名
                     db.集合名.updateOne(要修改的对象,{文档操作符:新对象});
           在updateOne()函数中需要传入两个对象,第一个对象为要修改的对象,可以传入一个条件对象{字段名:值},第二个对象为新的的文档对象。updateOne函数默认使用新对象来替换集合中符合条件对象的第一个文档对象,如果只需要修改符合条件对象的第一个文档对象的指定属性,而不需要替换则需要使用“修改操作符”来完成修改

    2、命令:use 数据库名
                     db.集合名.updateMany(要修改的对象,{文档操作符:新对象});
           在updateMany()函数中需要传入两个对象,第一个对象为要修改的对象,可以传入一个条件对象{字段名:值},第二个对象为新的的文档对象。updateMany函数默认使用新对象来替换集合中符合条件对象的所有文档对象,如果只需要修改符合条件对象的所有文档对象的指定属性,而不需要替换则需要使用“修改操作符”来完成修改

    3、命令:use 数据库名
                     db.集合名.update(要修改的对象,{文档操作符:新对象});
           在update()函数中需要传入三个对象,第一个对象为要修改的对象,可以传入一个条件对象{字段名:值},第二个对象为新的的文档对象。第三个对象为一个配置对象,update函数默认使用新对象来替换集合中符合条件对象的第一个文档对象,如果只需要修改符合条件对象的第一个文档对象的指定属性,而不需要替换则需要使用“修改操作符”来完成修改,如果需要使用update()函数来修改所有符合条件的对象,则需要在其第三个配置对象中传入{multi:true}

    4、命令:use 数据库名
                     db.集合名.replace(要修改的对象,{文档操作符:新对象});
           在replace()函数中需要传入二个对象,第一个对象为要替换的对象,可以传入一个条件对象{字段名:值},第二个对象为新的的文档对象

4、修改操作符:
      $set -----可以用来修改文档中指定的属性

      $unset -----可以用来删除文档中指定的属性

  • 查询数据中的文档
    1、命令:use 数据库名
                     db.集合名.find();
           在find()函数中可以接受一个对象作为条件,用来查询集合中符合条件的所有文档,如果不传入对象或传入空对象{},则默认查找所有的文档。所以find()函数返回的是一个文档数组,可以通过数组的操作方法对find()函数的返回值进行操作

    2、命令:use 数据库名
                     db.集合名.findOne();
           在findOne()函数中可以接受一个对象作为条件,用来查询集合中符合条件的第一个文档,如果不传入对象或传入空对象{},则默认查找集合中的第一个文档。所以findOne()函数返回的是一个文档对象

    2、条件对象{字段名:值},用作find()函数的参数,限制要查找的数据。如想要查找字段名name为孙悟空的文档,只需要在find()中传入{name:“孙悟空”}即可;若想查字段名name为猪八戒且字段名age为20的文档,只需要在find()中传入{name:“猪八戒”,age:“20”}即可。
    在这里插入图片描述

总结

本文主要总结了cmd命令行窗口使用MongoDB数据库的相关操作,包括数据库客户端和服务端的连接,数据库的CRUD操作等。实际工作中,数据对于一个公司很重要,所以数据库中的数据都不会删除,故删除的方法很少使用。一般情况下都是会在数据中加入一个字段(属性),用于标识该数据是否被删除,如果一个文档的该字段显示是被删除的,就可以在后面的操作中不使用该文档,造成一种表面上删除了样子,但是实际上数据还是存在在数据库中的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值