• 01-MongoDB数据库基础


    一、MongoDB数据库基础

    1、MongoDB数据库介绍

    什么是MongoDB

      MongoDB是非关系型数据库中的一种,是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB是面向文档的数据库(多个文档组成集合,多个集合组成数据库)(一个实例可以承载多个数据库、每个数据库都有独立的权限、保留数据库的名称(adminlocalconfig等)),区分大小写。Key唯一,不可重复。文档可嵌套。键值对是有序的。集合就是一组文档,文档类似于关系库里的行,集合类似于关系库里的表。集合中的文档无需固定的结构(与关系型数据库的区别)。

    集合的命名规则:

      不能是空字符串(" ")

      不能包含字符(空字符)

      不能使用system.的前缀(系统保留)

      建议不包含保留字 "$"

      用 . 分割不同命名空间的子集合(如:blog.users,blog.posts)

    2、安装及配置

    下载:

    https://www.mongodb.com/download-center/community

     

     

     

     

     

     启动:

    windows: mongod.exe --dbpath D:MongoDBdata
    linux: sudo service mongod start
    mac: mongod --config /usr/local/etc/mongod.conf

     

     

     

     运行成功。

    3、使用命令行操作数据库(CRUD增删改查)

    新增数据(create):

     查看本地有多少数据库:

    show dbs;

     要使用哪个数据库直接:

    use admin

     查看在那个数据库下:

    db

     如果我们需要创建student数据库直接:

    use student;

     接下来,我们需要添加一个文档

    stu = {
    ... name: "lishuntao",
    ... age: "18"
    ... }

     文档添加好了我们需要放到数据库中去。

    db.student.insert(stu);
    db.student.insert({name:"li",gender:"male"});

     查询(Read)

    db.student.find();
    db.student.finOne();

     

     修改数据(Update)

    db.student.update({name:"wang"},{name:"wangS"});  #第一个参数是条件,第二个是更新的文档的值

     

     对比一下会发现,文档已经被更新,ID是一样的。但更新的是直接用更新的数据替换原来的数据,ID没变。但假如我只想更新部分,而不是全部呢?

    stu_obj = db.student.findOne();
    stu_obj.name = "lishun";
    db.student.update({name:"lishuntao"},stu_obj)

     删除数据(delete):

    db.student.remove({name:"lishun"});#remove参数直接跟条件,满足条件的都会删除。
    db.student.remove({});#如果条件为空,那么会删除所有的文档

     

    db.student.insertMany(
    [
        {name:"lishuntao",age:18,sex:"male",grade:45},
        {name:"liso",age:15,sex:"famale",grade:35},
        {name:"litao",age:16,sex:"male",grade:55},
        {name:"lishun",age:14,sex:"famale",grade:65},
        {name:"ltao",age:17,sex:"famale",grade:25},
        {name:"bbo",age:20,sex:"male",grade:35},
        {name:"lanlan",age:18,sex:"famale",grade:20},
        {name:"xiaoxiao",age:19,sex:"male",grade:18},
        {name:"kankan",age:45,sex:"famale",grade:10},
        {name:"mingming",age:20,sex:"male",grade:75},
        {name:"meimei",age:25,sex:"famale",grade:85},
        {name:"yiyi",age:18,sex:"male",grade:35},
        {name:"sisi",age:16,sex:"famale",grade:36},
        {name:"siyi",age:10,sex:"male",grade:37},
        {name:"taotao",age:8,sex:"famale",grade:96},
    ]
    )

    (1)查询所有男生的数据(只需要学生的姓名和年龄):

    db.student.find({sex:"male"},{name: 1,age: true,_id: 0});

    (2)查询成绩及格的学生信息(学生成绩大于等于60):

    db.student.find({grade:{"$gte":60}});

     (3)查询所有18岁的男生和16岁的女生的数据

    db.student.find({"$or":[{sex:"male",age:18},{sex:"female",age:16}]});

    (4)按照学生的年龄进行排序

    db.student.find().sort({age:1});#升序
    db.student.find().sort({age:-1});#降序

     

    (5)将所有的女学生年龄增加一岁

    db.student.update({},{"$inc":{age:1}},{multi:true});#所有的学生
    db.student.update({sex:"famale"},{"$inc":{age:1}},{multi:true});#所有的女学生

    4、图形化管理工具操作

    下载:

    https://robomongo.org/download

    打开网页,点击下载弹出来根据自己系统下载不同系统的图形化工具。 下载、解压、安装。其他的功能直接看官方文档操作,方法和这里大同小异。

     

     

  • 相关阅读:
    Spring----MyBatis整合
    VueRouter案列
    Vue-Router
    axios用法
    Fetch的使用
    Promise用法
    组件之间传值
    局部组件注册方式
    学习组件与模板
    如何实现new,call,apply,bind的底层原理。
  • 原文地址:https://www.cnblogs.com/lishuntao/p/11930779.html
Copyright © 2020-2023  润新知