• Mongo db安装和使用


    安装

    linux下安装

    https://blog.csdn.net/qq_41107231/article/details/108028319

    1. 去官网下载安装包,自己选择需要的包,我这边是redhat 8,64位的,当然也可直接拷贝,只需要一些可执行文件,参见下方windows

    cd /usr/local/
    mkdir mongodb
    下载:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.4.tgz
    安装:tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz    

    2. 创建相关目录和配置文件

    cd /usr/local/mongodb/
    mkdir data
    mkdir logs
    cd ./logs
    touch mongodb.log
    cd ../
    mkdir etc
    cd etc
    touch mongodb.conf

    3. 配置mongodb.conf

    #数据库路径
    dbpath=/usr/local/mongodb/data
    #日志输出文件路径
    logpath=/usr/local/mongodb/logs/mongodb.log
    #错误日志采用追加模式
    logappend=true
    #启用日志文件,默认启用
    journal=true
    #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
    quiet=true
    #端口号 默认为27017
    port=27017
    #允许远程访问
    bind_ip=0.0.0.0
    #开启子进程
    fork=true
    #开启认证,必选先添加用户,先不开启(不用验证账号密码)
    #auth=true

    4.将mongodb服务加入环境变量

    vi /etc/profile
    在最后一行添加:export PATH=$PATH:/usr/local/mongodb/mongodb-linux-x86_64-4.0.13/bin
    使配置文件生效:source /etc/profile
    重启

    5.启动mongodb

    ./mongod --config /usr/local/mongodb/etc/mongodb.conf

    6. 添加用户

    运行mongo启动客户端
    use databasename(数据库名,假如没有会自动创建)
    db.createUser({user:"abc",pwd:"123456",roles:[{"role":"readWrite","db":"databasename"}]})

    7.创建相关表,或者直接导入数据库

    mongo打开客户端
    use dbName
    db.dropDatabase()
    mongorestore -d dbName /path

    8. 将mongodb配置开机自启动

    修改/etc/rc.local
    添加/usr/local/mongodb/mongodb-linux-x86_64-rhel80-4.4.4/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf

     windows下安装:

      傻瓜式安装,安装完成将目录“C:Program FilesMongoDBServer4.4in”添加到环境变量path

        1. 输入mongod –version, 查看是否安装成功

      

       2. 输入mongod启动mongodb

      

      确认是否自动启动

      

      3. 输入mongo打开客户端,然后就可以输入命令查看数据

       

       4. 安装mongodump,mongorestore等工具

      下载的数据库文件缺失很多工具,需要单独下载

      下载:https://www.mongodb.com/try/download/database-tools

      然后把对应的.exe放入到mongo安装目录下面

      

      5. 创建数据库和用户

    创建数据库:
        use myDb(数据库名字), 如果数据库不存在,则创建数据库,否则切换到指定数据库(这是通过show dbs看不到新建的数据库,需要插入一些数据才能看到)
    
    创建用户:
      db.createUser({user:
    "me",pwd:"123456",roles:[{"role":"readWrite","db":"myDb"}]})

     使用

      官方文档地址:

    https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html

      下面列举几个常用的功能:

      1. 备份

    linux直接运行下面命令 
    "mongodump -d ITZEX -o /tmp/mongobackup/"
    
    windows假如没有配置path,进入到mongo的安装目录bin下面,运行
    "mongodump -d ITZEX -o c:mongobackup"

      备份完生成如下文件

      

       2. 恢复

    先删除数据库 mongo->use myDB->db.dropDatabase()
    然后恢复指定路径的备份文件
    mongorestore -d myDB C:UsersmeDesktopmyDB

      3. 删除索引

    查询:db.getCollection('表名').getIndexes()
    删除:db.getCollection('表名').dropIndex('索引名')

      4. Mongodb插入查询的时候发现会比实际的少8个小时,jvm和.net都有对应的设置,原理如下:插入的时候,mongo驱动会自动把时间转换成0时区的时间,存入数据库,然后你会发现数据库中的数据跟实际的比对确实是少了8个小时。查询的时候,查出来的数据,mongo驱动会自动再加上8小时,所以你使用的时候就感觉不出有问题。假如你需要数据库里面存储的时间跟实际的一致,那么不管你插入还是查询都必须加8小时(对于mongo的insert和find是这样,但是aggregate方法不需要加)。

      5. 有一次碰到mongo命令连接不上,怀疑mongo挂了,我采取了如下步骤

    1. 通过ps –ef|grep mongo查看有没有该进程,假如有就kill
    2. 找出mongod.conf文件
    find / -name *mongo*
    3. Mongodb 重启
    /usr/bin/mongod -f /etc/mongod.conf

       6. 删除某个字段

    使用 db.表名.update 配合$unset 使用
    例如我们的表noPk 有两个列有字段名是script_type 我们要删除script_type=kshell字段
    > db.noPK.find()
    { "_id" : ObjectId("5a50642b908e6b07a84472a2"), "name" : "javascript", "value" : "vue.js" }
    { "_id" : ObjectId("5a50655b908e6b07a84472a3"), "name" : "Xshell", "type" : "script" }
    { "_id" : ObjectId("5a506b40908e6b07a84472a4"), "name" : "Xshell", "type" : "script" }
    { "_id" : ObjectId("5a506b9d908e6b07a84472a5"), "name" : "Xshell", "type" : "script", "script_type" : "bash_shell" }
    { "_id" : ObjectId("5a50703c908e6b07a84472a6"), "name" : "shell", "type" : "script", "script_type" : "kshell" }
    >
     
    删除:
    > db.noPK.update({"name": "shell"}, {$unset:{"script_type":"kshell"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.noPK.find()
    { "_id" : ObjectId("5a50642b908e6b07a84472a2"), "name" : "javascript", "value" : "vue.js" }
    { "_id" : ObjectId("5a50655b908e6b07a84472a3"), "name" : "Xshell", "type" : "script" }
    { "_id" : ObjectId("5a506b40908e6b07a84472a4"), "name" : "Xshell", "type" : "script" }
    { "_id" : ObjectId("5a506b9d908e6b07a84472a5"), "name" : "Xshell", "type" : "script", "script_type" : "bash_shell" }
    { "_id" : ObjectId("5a50703c908e6b07a84472a6"), "name" : "shell", "type" : "script" }
    >

      

  • 相关阅读:
    火爆全网的合成大西瓜小游戏魔改版大全
    [Qt]cmake下Qt隐藏console的窗口
    c# WebBrowser控制台输出执行js后的网页内容
    好的编程习惯是减少bug最有效的方法
    创建线程 出现SIGSEGV crash
    linux下进程创建/僵尸进程/孤儿进程
    C++实现不可被继承的类
    程序并发概述
    C++ vector实现原理
    C++深拷贝和浅拷贝
  • 原文地址:https://www.cnblogs.com/xiaojidanbai/p/14197167.html
Copyright © 2020-2023  润新知