zoukankan      html  css  js  c++  java
  • MongoDB之安装和基本使用(一)

    环境

    • ubuntu16.04

    mongodb基本特点

    MongoDB 是一个基于分布式 文件存储的NoSQL数据库;可以把MongoDB想象成一个大py字典。

    • 模式自由 :可以把不同结构的文档存储在同一个数据库里
    • 面向集合的存储:适合存储 JSON风格文件的形式
    • 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

    安装

    apt安装

    sudo apt update
    sudo apt install mongodb
    
    • 安装完毕后mongod已经自动启动了。

    • apt安装会自动创建相关的配置文件

    /etc/mongod.conf # mongodb的启动配置文件
    /var/log/mongodb/mongod.log # 日志文件
    /var/lib/mongodb # 数据文件目录
    

    安装后会自动启动,自动设置了开机自启动。

    源码安装

    sudo apt-get install libcurl3 openssl
    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.0.0.tgz # 后面可以写不同的版本
    
    # 解压
    tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.0.0.tgz
    # 移动
    mv mongodb-linux-x86_64-ubuntu1604-4.0.0.tgz /usr/local/mongodb
    # 添加到环境变量
    vi ~/.bashrc
    
    export PATH=/usr/local/mongodb/bin:$PATH
    
    • 源码安装需要自己去创建相关的配置文件。

    卸载

    # 移除所有相关的安装文件
    sudo apt-get purge mongodb-org*
    # 移除数据文件和日志文件
    sudo rm -r /var/log/mongodb
    sudo rm -r /var/lib/mongodb
    

    基本命令

    # 默认监听端口port 27017
    
    # 启动
    sudo service mongodb start 
    # 停止
    sudo service mongodb stop
    # 重启
    sudo service mongodb restart
    
    # 客户端连接
    mongo --host 127.0.0.1:27017
    
    # 退出
    exit
    
    • 如果使用service命令报错:
    Failed to stop mongodb.service: Unit mongodb.service not loaded.
    

    需要手动添加mongodb.service

    vi /etc/systemd/system/mongodb.service
    
    [Unit]
    Description=High-performance, schema-free document-oriented database
    After=network.target
     
    [Service]
    Type=forking
    User=mongodb
    Group=mongodb
    RuntimeDirectory=mongod
    PIDFile=/var/run/mongodb/mongodb.pid
    ExecStart=/usr/bin/mongod -f /etc/mongodb.conf --pidfilepath /var/run/mongodb/mongodb.pid --fork
    TimeoutStopSec=5
    KillMode=mixed
     
    [Install]
    WantedBy=multi-user.target
    

    基本数据库操作

    # 基本命令
    db # 查看当前的数据库,默认当前数据库为test
    show dbs # 查看所有的数据库
    use xxx # 切换数据库,如果不存在也进入,但只有在插入了数据后才会真正地创建
    db.dropDatabase() # 删除当前指向的数据库
    
    # 创建集合
    db.createCollection(name, options) # 相当于mysql的表,创建集合
    name:集合的名字
    options:配置参数,一个json格式文档,如:{ capped : true, size : 10 },限制集合大小
    
    # 查看集合
    show collections
    # 删除集合
    db.xxx(集合name).drop()
    
    # 插入,这个创建的集合插入许多的小的json文档,类似py的字典,每个字典有一个_id,如果不指定或自动分配。
    db.xxx(集合name).insert({_id:xxx,name:"xxx"})
    
    # 查询
    db.xxx(集合name).find() # 会显示集合所有文档
    
    # 更新
    db.xxx(集合name).update(
       <query>, # 查询条件,类似sql语句update中where部分
       <update>, # 根据查询更新字段
       {multi: <boolean>} # 默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
    )
    
    # 保存,如果该_id存在则相当于update,如果不存在相当于insert
    db.xxx(集合name).save({_id:xxx,name:"xxx"}) 
    
    # 删除
    db.xxx(集合name).remove(
       <query>, # 查询条件
       {
         justOne: <boolean> # 如果设为true或1,则只删除一条,默认false,表示删除多条
       }
    )
    

    数据的类型

    • MongoDB和mysql一样有数据类型
    Object ID:专门用于文档ID,是自动的,如果手动加文档ID,则为string类型。
    String:字符串,最常用,必须是有效的UTF-8
    Boolean:存储一个布尔值,true或false
    Integer:整数可以是32位或64位
    Double:存储浮点值
    Arrays:数组或列表,多个值存储到一个键,如:{"color" : [ "red", "black" ]}
    Object:用于嵌入式的文档,即一个值为一个文档,如一个图片二进制流,一篇文章
    Null:存储Null值
    Timestamp:时间戳
    Date:存储当前日期或时间的UNIX时间格式
    

    用户管理

    mongodb默认是没有用户的,也就是说一开始是完全暴露的,可以在admin数据库中创建root用户。

    • 用户的类型
    root:只在admin数据库中可用,超级账号,超级权限
    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    
    • 创建root用户
    use admin
    db.createUser({
        user:'admin',
        pwd:'123456',
        roles:[{role:'root',db:'admin'}]
    })
    
    • 启动登录验证
    # 修改配置文件/etc/mongodb.conf
    # 去除注释
    auth=true
    
    # 重启mongodb
    service mongoodb stop 
    service mongoodb start
    
    # 输入mongo仍然可以进入数据库,但是对admin数据库没有访问权限
    
    • 用户的登录验证
    # 方法一:连接时验证
     mongo -u 'admin' -p '123' --authenticationDatabase 'admin'
    
    # 方法二:连接后验证
    user admin
    db.auth("admin", "123456")
    
    • 创建普通用户
    # 在任何一个位置进行操作都可以,不一定要在admin数据库下执行创建操作
    db.createUser({
        user:'cwp',
        pwd:'passwd',
        roles:[{role:'readWrite',db:'test1'}]
    })
    
    • 修改用户属性
    db.updateUser('t1',{pwd:'456',roles:[{role:'Read'}]})
    

    数据备份与恢复

    # 备份数据
    mongodump -h dbhost -d dbname -o dbdirectory
    -h:服务器地址,也可以指定端口号,127.0.0.1:27017
    -d:需要备份的数据库名称
    -o:备份的数据存放位置,此目录中存放着备份出来的数据
    
    # 恢复数据
    mongorestore -h dbhost -d dbname --dir dbdirectory
    -h:服务器地址
    -d:需要恢复的数据库实例
    --dir:备份数据所在位置
    

    允许远程连接

    vi /etc/mongodb.conf
    
    #允许局域网连接
    bind_ip=127.0.0.1,192.168.1.2
    
    # 允许公网连接
    bind_ip=127.0.0.1,192.168.1.2,公网ip
    
  • 相关阅读:
    接口请求的例子
    SQLServer跨库查询分布式查询
    查看数据库估计的执行计划
    数据库对比工具
    十步完成windows服务的安装
    cdn 浏览器缓存机制
    quartz spring 整合例子
    利用jquery 实现多文件上传
    监测数据库的结构变化
    yii sql的输出
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/9377896.html
Copyright © 2011-2022 走看看