zoukankan      html  css  js  c++  java
  • 【MEAN Web开发】CentOS 7 安装MongoDB 3.2.3

    偶然得了一本书,AmosQ.Haviv 所著 《MEAN Web开发》。起初并不知道这啥东西,看了下目录发现正好有讲MongoDB而已。当时的项目正好需要做MongoDB的内容,之后这书就被扔一边没时间看了。

    昨天有时间了就翻出来看了下,发现MEAN和我以为的MEAN不是一回事。

    这里又先挖一个新坑,【MEAN Web 系列】

    当然本篇仅仅关于CentOS7下安装MongoDB并服务化运行(开机启动)

    可能是我的CentOS Yum版本不够,直接使用yum install 命令找不到MongoDB的安装包。那就还是用原始的做法,从官网下载最新版本 3.2.3的tgz包。

    MongoDB的安装非常容易,解压到指定位置然后通过命令行启动,前边步骤和Windows下安装没有太多区别。大致截图说明一下即可。

    1. 下载及解压:

      我把程序放到/usr/local/mongodb/下,命令很简单:

    cd /usr/local/
    cp /home/user/Desktop/SoftWare/mongodb-linux-x86_64-3.2.3.tgz ./
    tar -zxvf mongodb-linux-x86_64-3.2.3.tgz 
    mv mongodb-linux-x86_64-3.2.3 mongodb
    

      如此可以得到最终的mongodb文件夹,里边的文件结构如下:

      

      其中,bin文件夹里是mongoDB的主程序目录,内部包涵各种所需的可执行文件。

    2. 配置db数据文件路径和日志路径

         MongoDB的数据库文件需要单独制定一个db文件夹,内部文件将被自动创建。 日志文件也在安装配置时自动创建。我们这里默认放在安装目录内

      即: /usr/local/mongodb/data/ 和 /usr/local/mongodb/logs/

    3. 命令行直接启动:

      我们来看下/bin目录内:

      

      其中重点关注的是 mongod 和mongo两个可执行文件。

      实际上,mongod是相当于服务器端程序,mongo是客户端程序。两个程序是完全命令行化的操作,并且直接支持js的语法格式。

      启动命令如下:

      

    mongodb/bin/mongod --dbpath mongodb/data/ --logpath mongodb/logs/log -fork
    #mongod 用于管理服务器端,  命令行启动需要指定其data文件夹路径和日志路径。
    

      运行效果如图:

      

      

      用子客户端连接测试:

      

      看到红框里的内容,只要没有报其他的错误便是连接成功。

      当然这里有警告,因为我是以sudo权限启动的,这样做并不安全。

    4. 配置MongoDB 专用账户

    5. 配置MongoDB 开机自启动

    6. 基本操作测试

      通过mongod命令将MongoDB启动后,若未使用fork参数指定后台运行,则mongoDB的服务端将在当前终端里显示运行日志。

      

    如图,看到waiting for connections on port 27017即说明启动成功。27017是mongoDB默认的端口。

    启动另一个终端以进行mongo (客户端)操作命令:首先是连接mongodb服务端:

    客户端使用mongo命令后,由于此处为本地访问故可以省略访问的ip,这样默认会创建到127.0.0.1:27017的服务的连接。在客户端看到显示Connectiong to: test 后,证明连接成功。 test是默认创建的数据库。同时在服务端可以看到红框中的信息,表示有客户端进行了连接。

    一些基本的操作命令包括创建数据库、创建表、数据增删查改、删除表、删除数据库,以下一一演示。

    首先创建数据库非常简单:

    use xxx即可,xxx为用户指定的数据库名称。

    use 相当于选择数据库的作用,如果不存在所指定名称的数据库将默认新建一个。

    当然此时并不会有数据,亦不会有对应的数据库文件生成。仅当用户创建了新表并写入数据后才会真正去创建文件。

    现在来观察:对这个我们定义的新的db对象内建表并插入数据后会怎样。

    在仅仅选择了createdTest这个db后,我们用show dbs 命令并没有看到除了默认的local以外的db库。

    而当我们对这个db中新建了表(在mongoDB中无表概念,而是Collection,它与表是有本质不同的)并插入数据,情况就完全变了。

    我们使用如下命令进行插入操作

    db.testCol.insert()
    /* db代表当前所选db,
        testCol是由用户指定的Collection对象,
        若缺省则新建,
        insert()为插入方法,后跟具体的Bson数据对象。 */

    再使用show collections命令后,看到已经创建出testCol这个Collection。

    当然此时再使用show dbs命令则会看到我们指定的createdTest 数据库了。

    数据的查、删、改操作如下:

    //Query For all data 
    db.[collection].find()
    //Query for asigned data
    db.[collection].find([query condition])
    
    //update ,base update command
    db.[collection].update([targerItem], $set[update filed & data]}
     
    //delete a row of data
    db.[collection].remove([query condition],[justOne=true/false])
    /* the justOne param when setting to false or not given, then the remove command will
      delete all rows which are accord with the query condition.
    */

    如果要清理某个collection,与主流数据库类似有drop方法。

    一个测试: 我们先观察在删除了db中唯一一个collection里的所有数据后,collection是否还存在

    find方法已经查不到数据了,而collection还存在,当然db也存在。

    那要删除这个collection后又如何呢?

    我们看到 drop的方法返回true代表清理成功。

    而此时collections已经确实没有内容了,另外由于我们删除了当前db中唯一的collection,dbs也就一并被删除了。

    如果是以命令 mongod方式打开了MongoDB的服务,需要关闭有两种操作。

    1). 启动时没有提供 --fork参数

      关闭mongod运行终端即可

    2). 启动时通过 --fork方式启动

      

    //shut down server command
    use admin
    db.shutdownServer()
    

      

    首先需要切换到admin数据库(与Oracle等类似)

    之后使用shutdownServer命令即可。

    应该注意的是该命令仅在本地mongo客户端或经验证方式登陆的客户端中使用有效。

    效果如图:

    客户端:

    服务端:

     

    基本操作如上所述。mongoDB虽然轻量但内容绝对不止这么点。之后将继续整理笔记写完这个专题。

    感谢阅读。

      

  • 相关阅读:
    AngularJs学习笔记Understanding Angular Templates
    AngularJs学习笔记Creating Services
    AngularJs学习笔记E2E Testing
    AngularJs学习笔记Using $location
    AngularJs学习笔记Injecting Services Into Controllers
    AngularJs学习笔记unittesting
    AngularJs学习笔记Guide教程系列文章索引
    C语言 自幂数
    C# 虚拟键盘核心方法 Tech
    [转]SQLite SQL语句结构详解 Tech
  • 原文地址:https://www.cnblogs.com/DannielZhang/p/5244080.html
Copyright © 2011-2022 走看看