首页 > 数据库 >MongoDB基础入门学习

MongoDB基础入门学习

时间:2023-11-13 10:55:54浏览次数:45  
标签:入门 MongoDB 数据库 db 学习 文档 address age

MongoDB基础入门

此视频为学习 尚硅谷MongoDB基础入门的学习记录

导航

目录

一、数据库

  1. 什么是数据库?

    • 存储数据的仓库
  2. 为什么要有数据库?

    • 首先数据是存储在内存里运行的,如果一断电的话,数据就会丢失,所以可以将数据存储到硬盘,但是硬盘没有联网,所以有了可以联网也可以存储数据的数据库。
  3. 数据库能做什么?

    • 数据库可以存储数据,并且这些数据还可以连接网络,也就是和硬盘相比,可以不用将数据库到处带,就像是网盘。
  4. 数据库的服务器和客户端

    • 服务器:保存数据的
    • 客户端:操作和存储数据的(CRUD)
  5. 数据库的分类

    • 按照关系型分类:

      • 关系型数据库(MySQL、Orcal等)

      • 非关系型数据库(MongoDB)

        • 关系型和非关系型的区别:
          总而言之就是:关系型的是创建表格, 非关系型是可以创建任意多个文档。

        • 1、数据存储方式不同。
          关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
          
          与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
          
          2、扩展方式不同。
          
          SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。
          要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。
          
          因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。而NoSQL数据库是横向扩展的。
          
          而非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
          
          3、对事务性的支持不同。
          
          如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
          
          

二、MongoDB常见命令

  1. 安装MongoDB

  2. MongoDB的常见命令

    • 打开服务器:net start MongoDB
    • 关闭服务器:net stop MongoDB
    • 打开客户端:mongo,在cmd窗口便可以连接上数据库
  3. MongoDB的数据库分类

    • 数据库(database):用来存储集合的,而且数据库也有分大小。
    • 集合(collection):集合类似于数组,用于存放文档的
    • 文档(document): 文档是MongoDB数据库中最小的单位,我们要操作的目标就是文档。
    • MongoDB关系: 数据库(database) > 集合(collection)> 文档(document)
    • 值得注意的是: 在MongoDB中不需要自己创建数据库和集合,便可以直接创建文档,其实就是在创建文档的同时,会将数据库和集合创建了。
  4. 操作MongoDB数据库

    • 在使用之前可以安装一个编辑器(nosql manager for mongodb),下载免费版便可,可以不用在cmd界面操作。

    • 最基础的代码:

      • use ppxia:进入数据库ppxia
      • show dbs:显示数据库
      • show collections:显示当前数据库有什么集合
      • db:查看是在哪个数据库
    • 对MongoDB数据库的CRUD操作

      • 官方文档

      • 增加

        • db.集合名.insert(document):表示增加一个或多个文档

          db.piyou.insert({name: "孙悟空", age: 28, address:"花果山"});
          /*
          	表示向 集合名为piyou插入了文档, 文档内容是对象。
          	集合名是自己创建的,想用什么名称就用什么。
          */
          
          db.piyou.insert([
          	{name:"猪八戒", age: 38, address:"高老庄"}, 
          	{name: "沙和尚", age: 45, address:"流沙河"}
          ]);
          /*
          	可以注意到: 传递的数据是数组,数组内部是对象,
          		其实对象就相当于文档,这就是插入了两个文档。
          */
          
        • db.集合名.insertOne(document.[callback]):表示插入一个文档,回调函数callback是可选的

          • db.piyou.insertOne({name:"唐僧", age: 18, address: "女儿国"});
            /*
            	表示向集合名为piyou的 插入了一个文档。
            */
            
        • db.集合名.insertMany(document, [callback]):表示插入多个文档

          • db.piyou.insertMany([
            	{name:"白骨精", age:20,address:"白骨洞"}, 
            	{name:"蜘蛛精", age: 24, address:"蜘蛛洞"}
            ]);
            /*
            	可以看到,用法是和insert是相差不多的。数组里面有对象,对象即是文档。
            */
            
            
      • 查找

        • db.集合名.find(condition);:查询一个或多个文档

        • db.集合名。findOne(condition);:查询一个文档

        • db.集合名.findMany(condition):查询多个文档

        • 查询案例:

          • db.piyou.find({});

            {
                "_id" : ObjectId("654e3d779da167acf1219f50"),
                "name" : "孙悟空",
                "age" : NumberInt(28),
                "address" : "花果山"
            }
            {
                "_id" : ObjectId("654e3e0c9da167acf1219f51"),
                "name" : "猪八戒",
                "age" : NumberInt(38),
                "address" : "高老庄"
            }
            {
                "_id" : ObjectId("654e3e0c9da167acf1219f52"),
                "name" : "沙和尚",
                "age" : NumberInt(45),
                "address" : "流沙河"
            }
            {
                "_id" : ObjectId("654e3e529da167acf1219f53"),
                "name" : "唐僧",
                "age" : NumberInt(18),
                "address" : "女儿国"
            }
            {
                "_id" : ObjectId("654e3e829da167acf1219f54"),
                "name" : "白骨精",
                "age" : NumberInt(20),
                "address" : "白骨洞"
            }
            {
                "_id" : ObjectId("654e3e829da167acf1219f55"),
                "name" : "蜘蛛精",
                "age" : NumberInt(24),
                "address" : "蜘蛛洞"
            }
            
          • db.piyou.find({age:18})
            //这条语句表示的是查询age是18的文档。 值得注意的是,条件也是写在了对象里面,
            //也是因为传入的值需要是json语句	
            

            image-20231113103916560

        • db.集合名.find(condition).count;:使用count()来计数

          • db.piyou.find().count(); // 执行结果是: 6, 因为在插入那边是一共插入了6条数据
          • 总结:find()返回的是数组,数组内存放着文档,findOne()返回的就是一个文档,
            findMany()返回的也是数组内存放着文档的形式。find()的返回值还可以调用count(),
            用来获取符合条件的数量

标签:入门,MongoDB,数据库,db,学习,文档,address,age
From: https://www.cnblogs.com/LiuYueSheng/p/17828668.html

相关文章

  • 无监督学习的集成方法:相似性矩阵的聚类
    在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。这种类型的方法已经在监督学习领域得到了广泛的研究和应用,特别是在分类问题上,像RandomForest这样非常成功的算法。通常应用一些投票/加权系统,将每个单独模型的输出组......
  • 小白入门CSDN如何编写博客(保姆级)
    首先要登录博客园,没有账号要先注册一个账号(推荐微信注册,快捷)登录后点击写随笔在发布界面中编辑醒目标题与核心内容然后设置文章的各项属性最后发布博客就好啦~看完点赞~人美心善!......
  • 学期2023-2024-1 20231409 《计算机基础与程序设计》第七周学习总结
    学期2023-2024-120231409《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第七周作业这个作业的目标自学教材:数组与链表,基于数组和基于链表实现数据结构,......
  • 2023-2024-1学期20232412《网络空间安全导论》第十周学习总结
    教材学习内容总结本周主要学习《网络空间安全导论》第一章的内容,初步了解了网络空间安全的概念以及学科所覆盖的内容,了解了相关的法律法规,并且接触了之前从未了解的信息安全标准。通过第一章的学习,我也正式开始对我们专业的学习,认识到网络空间安全的重要性,掌握了计算机学习与其他......
  • 2023-2024-1 20232421 《网络空间安全导论》第10周学习总结
    教材学习总结国内外网络安全的现状网络空间安全的内容网络空间安全受到重视的原因课程涵盖内容思维导图教材学习中的问题和解决过程问题1:混淆信息安全与网络空间安全的概念,并执着于将其区分开。问题1解决办法:研读教材:教材中由信息安全引出网络空间安全,援引信息论的论述......
  • 2023-2024-1 20232407 《网络》第一周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:对于我国遭受到的网络攻击了解不深入问题1解决方案:百度搜索问题2:不了解信息论的深入内涵问题2解决方案:问chatgpt等AI工具基于AI的学习思考网络空间安全是当今世界面临的重要挑战之一。随着互联网的不断发展和普及,网络......
  • 学习笔记9
    第6章信号与信号处理一、知识点总结(一)信号和中断进程从事日常事务的人在用户模式或内核模式下运行的Unix/Linux进程执行机器指令的CPU中断人员中断进程中断硬件中断进程的陷阱错误(二)Unix/Linux信号示例e.g.“Ctrl+C”组合键生成键盘硬件中断。(三)Unix/......
  • 2023-2024-1 20232426刘嘉成 《网络空间安全导论》第1周学习总结
    2023-2024-120232426刘嘉成《网络空间安全导论》第1周学习总结教材学习内容总结简要总结本周学习内容:本周我自学了《网络空间安全导论》第一章:网络空间安全概述,分别从信息时代与信息安全,网络空间安全学科浅谈,网络空间安全法律法规,信息安全标准四个方面进行了学习。对我国网......
  • 2023-2024-1 学号:20231310《计算机基础与程序设计》第7周学习总结
    作业信息这个作业属于哪个课程<班级的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业要求在哪里<作业要求的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP/homework/12754这个作业的目标<自学教材计算机科学概论第8章并完成......
  • 学习笔记九
    信号和信号处理摘要本章讲述了信号和信号处理;介绍了信号和中断的统一处理,有助于从正确的角度看待信号;将信号视为进程中断,将进程从正常执行转移到信号处理;解释了信号的来源,包括来自硬件、异常和其他进程的信号;然后举例说明了信号在Unix/Linux中的常见用法;详细解释了Unix/Linux中......