美文网首页
全栈工程师 07 笔记

全栈工程师 07 笔记

作者: 景岳 | 来源:发表于2016-08-15 13:52 被阅读28次

    MongoDB数据库

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
    他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。
    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
    Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
    • 面向集合存储,易存储对象类型的数据。
    • 模式自由。
    • 支持动态查询。
    • 支持完全索引,包含内部对象。
    • 支持查询。
    • 支持复制和故障恢复。
    • 使用高效的二进制数据存储,包括大型对象(如视频等)。
    • 自动处理碎片,以支持云计算层次的扩展性
    • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
    • 文件存储格式为BSON(一种JSON的扩展)
    • 可通过网络访问
      所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。
      模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,完全可以把不同结构的文件存储在同一个数据库里。
      存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。
      MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB
      在32位模式运行时支持的最大文件尺寸为2GB。
      MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

    在mongodb中基本的概念是文档、集合、数据库,下表Mongo中的一些概念

    SQL术语/概念 MongoDB术语/概念 解释/说明
    database database 数据库
    table collection 数据库表/集合
    row document 数据记录行/文档
    column field 数据字段/域
    index index 索引
    table joins 表连接,MongoDB不支持
    primary key primary key 主键,MongoDB自动将_id字段设置为主键

    一、数据库排行榜前10 http://db-engines.com/en/ranking

    1. Oracle 大型项目使用商业收费的
    2. MySQL 集群
    3. Microsoft SQL Server
    4. MongoDB 文档存储
    5. PostgreSQL
    6. DB2
    7. Cassandra
    8. Microsoft Access
    9. SQLlite
    10. Redis

    二、MongoDB数据库安装与操作
    MongoDB 数据库官网 http://www.mongodb.com
    MongoDB数据库下载地址https://www.mongodb.com/download-center?jmp=nav#community

    mongoDB的安装步骤

    1. 到官网下载MongoDB数据库压缩包到服务器上


      wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.8.tgz* -c 参数 :支持断点续传
    2. 解压刚刚下载的mongoDB压缩包 运行
      //解压缩
      tar zxvf mongodb-linux-x86_64-ubuntu1604-3.2.8.tgz
      //重命名
      mv mongodb-linux-x86_64-ubuntu1604-3.2.8 mongodb
      //切换目录
      cd mongodb
      //创建数据目录
      mkdir jingyue_db
      //运行
      ./bin/mongod --dbpath=./jingyue_db
      解释:
      ./bin/mongod //安装执行文件
      --dbpath=./jingyue_db //安装数据库路径
      jingyue_db //自己创建专门用来放数据库的文件

    3. 编写开启mongoDB的shell脚本
      vim ~/mongodb/bin/mongodb
      内容:
      #!/bin/bash
      sname="/home/scort/mongodb/bin/mongod --dbpath=/home/jingyue/mongodb/db_data"
      case $1 in
      start)
      $sname &
      ;;
      stop)
      pkill mongod
      ;;
      esac
      保存退出!
      //添加执行权限
      chmod 750 mongodb
      //运行//开启
      /home/jingyue/mongodb/bin/mongodb start
      //关闭
      /home/jingyue/mongodb/bin/mongodb stop


    mongoDB的增、删、改、查

    1. 进入数据库命令,MongoDB的默认端口:27017
      /home/scort/mongodb/bin/mongo
    2. 创建数据库

      新创建的并不在数据库的列表中, 要显示它,我们需要向 数据库插入一些数据
      use test //use 自定义集合名也可称库名
      db;

    3. 查看数据库使用情况查询
      show dbs;
    4. 使用 insert() 方法向集合中插入文档
      //insert插入单条数据
      db.test.insert({"xingqu":"计算机"});
      // insertMany插入多条数据,键名(key)的分号可加可不加,
      db.test.insertMany([{name:"jing"},{name:"yue"},{name:"xiaoyueyue"}]);
      //插入多条数据,使用语法
      for(i=0;i<100;i++)db.test.insert({name:"jingyue"}) // 插入了100条数据
    5. 查询数据
      db.test.find();
      db.test.find();
      db.test.find().toArray();
      db.test.find().toArray();
      db.test.find().pretty();
      db.test.find().pretty();
      算出test表有多少条数据
      db.test.find().count();
      指定不用查出来的数据
      db.test.find().skip({name:'jing'});//包含{name:'jing'}不用查
      指定查出的条数
      db.test.find().limit(10);//查出十条
      查看索引
      db.test.getIndexes();
      查询当前版本号
      db.version() // 3.2.8
      查看当前库所有集合名
      //新创建的集合并不在数据库中, 要显示它,我们需要向集合里插入一些数据
      db.getCollectionNames(); // [ "test" ]
      show collections; // test
      查看当前库
      db.getName(); // test
      切换集合
      use teacher;
      db.getName(); // teacher
    6. 删除
      删除数据库
      db.dropDatabase();
      删除数据表
      db.test.drop();
      删除数据
      db.test.remove({name:'jingyue'});//删除test表中name为jingyue的数据
    7. 更新Update
      update() 方法用于更新已存在的文档。语法格式如下:
      db.test.update({name:'jing'},{$set:{name:'yue'}},false,true)
      参数说明:

    **第一个参数 **: update的查询条件,类似sql update查询内where后面的。
    第二个参数: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    **第三个参数 **: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    第四个参数: 可选,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    第五个参数:可选,抛出异常的级别,一般用不到。

    **实例:**
        //此处有两个参数第一个参数表示查找的地方,第二个表示要改的地方        
         db.test.update({name:'jing'},{sex:12});
        // 此处表示若更改则会把X,Z的值覆盖 使用set能够避免覆盖更改一条不存在的数据的时候
        // 默认插入到数据库中 
         db.test.insert({x:100,y:100,z:100});
         db.test.update({z:100},{$set:{y:99}}); 
        //此处增加TRUE 表示增加一条不存在的数据 
         db.test.update({name:'yue'},{sex:18},true);
    

    express 框架

    nodejs模块: https://www.npmjs.com

    Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,和丰富的 HTTP 工具。
    使用 Express 可以快速地搭建一个完整功能的网站。
    Express 框架核心特性:

    • 可以设置中间件来响应 HTTP 请求。
    • 定义了路由表用于执行不同的 HTTP 请求动作。
    • 可以通过向模板传递参数来动态渲染 HTML 页面。
      express-generatorexpress 应用生成器通过应用生成器工具express可以快速创建一个应用的骨架

    全局安装

    sudo npm install -g express-generator
    其中 -g 参数:全局
    

    在当前文件夹下生成blog项目

     express -e blog
    

    进入blog项目目录(以下操作都在这个目录下进行)

     cd blog
    
    • app.js 入口文件
    • bin 启动程序文件
    • package.json 项目名称版本
    • public 放着静态资源文件
    • routes 路由文件
    • views 视图目录、放着模板视图、俗称页面。


      blog项目创建完成

    安装所有依赖包

     npm install
    
    安装完后会出现这个目录

    开启项目

    npm start
    
    开启后显示

    浏览器输入网址加端口号,默认端口号为3000

    192.168.23.128:300
    
    网页显示

    完成以上步奏说明框架已搭好,可以开发了。


    扩展

    在Linux系统里,MongoDB 服务器启动都需要输入一长串代码,我们来制作一个sh文件,每次只需要启动下文件就好(mongo.sh)

        #!/bin/bash
        cd /home/jingyue/mogondb/bin/ ./mongod --dbpath=../test_db(mongodb数据库)
    

    执行 mongo.sh

     sh mongo.sh
    

    相关文章

      网友评论

          本文标题:全栈工程师 07 笔记

          本文链接:https://www.haomeiwen.com/subject/tvkusttx.html