zoukankan      html  css  js  c++  java
  • MongoDB基础教程(安装、操作、配置)

    MongoDB


    下载安装

    简易安装

    # redhat, centOS
    sudo yum install -y mongodb
    
    # debian, ubuntu
    sudo apt install -y mongodb 
    

    如果简易安装失败,各种操作系统具体的安装请移步官方文档:

    https://docs.mongodb.com/manual/administration/install-on-linux/

    修改配置文件

    vi /etc/mongod.conf

    bind_ip默认是127.0.0.1,只可以本地连接,修改为0.0.0.0即可


    MongoDB 数据文件默认存储在 /var/lib/mongo 目录,默认日志文件在 /var/log/mongodb 中。

    如果要修改,可以在 /etc/mongod.conf 配置中指定备用日志和数据文件目录。

    查看MongoDB是否启动成功:

    查看日志文件:cat /var/log/mongodb/mongod.log

    日志文件应该有如下一句说明:

    [initandlisten] waiting for connections on port <port>

    卸载移除mongo

    yum erase $(rpm -qa | grep mongodb-org)

    移除数据库文件和日志文件

    rm -r /var/log/mongodb

    rm -r /var/lib/mongo


    MongoDB操作命令

    服务命令

    查看帮助:mongod --help

    启动:systemctl start mongod

    停止:systemctl stop mongod

    重启:systemctl restart mongod

    查看是否启动成功: ps aux | grep mongod

    配置文件位置:/etc/mongo.conf

    默认端口:27017

    日志的位置:/var/log/mongodb/mongod.log


    数据库命令

    查看当前数据库:db

    查看所有数据库:show databases/dbs

    切换/新建数据库:use databaseName

    删除当前数据库:db.dropDatabase()


    集合基础命令

    不手动创建集合:

    向不存在的集合中第一次加入数据时,集合会被创建出来

    手动创建集合:

    db.createCollection(name,options)
    
    eg:——db.createCollection('sub',{capped:true, size:10})
    

    capped:默认值为false表示不设置上限,true相反

    size:当capped为true时,需要指定此参数,表示上限的大小,当文档达到上限,会覆盖之前的数据。类似于先进先出队列。

    查看集合:show collections

    查看全部集合内容:db.collectionName.find()

    删除集合:db.collectionName.drop()

    查询指定记录:db.collectionName.find("name": "李四")

    插入数据:

    # 如果数据库中不存在集合,就创建并插入这些数据。里面的key-value不用保持一致
    db.student.insert({"name":"小明","age":"12","sex":"男","class":"六年级一班"});
    
    db.student.insert({"name":"小红","age":"12","sex":"女","phone":"18513081650","class":"六年级二班"});
    
    #同时插入多条数据
    db.student.insert([{"name":"小李子","age":"12","sex":"男","class":"六年级二班"},{"name":"小丽","age":"12","sex":"女","phone":"18513081650","class":"六年级一班"}]);
    

    更新数据:

    db.student.update({"name":"小明"},{"name":"张小明"});#如果有多条语句,只修改第一条,会覆盖原有数据
    db.student.update({"12":"女"},{"name":"刘小花"});
    db.student.update({"name":"小李子"},{$set:{"name":"李小子"}});#只想改某个key的value使用set
    db.student.update({"name":"小丽"},{$set:{"name":"周小丽"}},{multi:true});#把所有的记录都改了
    

    查询数据:

    # 查询全部
    db.student.find();
    # 查询指定记录,返回这一行结果
    db.student.find({"name":"小丽"});
    db.student.update({"name":"李小子"},{"name":"李子小","age":"12","sex":"男"});
    # and操作
    db.student.find({"name":"李子小","age":"12"});
    # or操作
    db.student.find({$or:[{"name":"李子小"},{"name":"张小明"}]});
    # 格式化显示
    db.student.find().pretty();
    # 获取结果的行数
    db.student.find().count();
    # 按照sort里面key的值排序,1为正序,-1为倒序
    db.student.find().sort({"age":-1});
    

    删除数据:

    # 删除所有数据
    db.student.remove();
    # 按照条件删除
    db.student.remove({"22":"女"});
    # 删除几条
    db.student.remove({"sex":"男"},2);
    

    创建用户:

        db.createUser({
        user: "your_user",
        pwd: "password",
        roles: [{role: "readWrite",db: "your_db"}]
    })
    

    数据类型

    Object ID: 文档ID

    String: 字符串,必须是有效的UTF-8

    Boolean: true or false

    integer: 可以是32或64,这取决于服务器

    Double:存储浮点值

    Arrays: 数组或列表,多个值存储到一个键

    Object: 用于嵌入式文档,即一个值为一个文档

    Null: 存储Null值

    Timestamp: 时间戳,表示从1970-1-1到现在的总秒数

    Date:存储当前日期或时间的Unix时间格式


    设置/查看具体参数

    设置参数
    • db.adminCommand({setFeatureCompatibilityVersion:'4.0'}) // 修改版本到4.0
    • db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 300 } ) // 修改事务超时时间为5分钟开启事务支持
    • db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } ) // 修改事务获取锁的等待时间20毫秒
    查看具体参数

    db.adminCommand( { getParameter: 1, transactionLifetimeLimitSeconds: 1 } )

    查看是否为Master

    db.isMaster()


    将MongoDB中的collection导出为csv

    mongoexport -h localhost -d dbname -c collname -f field1,field2 --csv -o output.csv


    Mongo配置文件详解

    文件路径/etc/mongod.conf

    verbose:

    日志信息冗余,默认false。提高内部报告标准输出或记录到logpath配置的日志文件中,要启用verbose或启用verbosity用vvvv参数。
    eg:verbose = true 或 vvvv = true 
    ps:启动verbose冗长信息,级别有vv~vvvvv,v越多级别越高,日志文件中记录的信息越详细。
    

    port:

    端口。默认27017,MongoDB的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用mongodb账号启动,否则报错。
    
    port = 27017
    

    bind_ip:

    绑定地址。默认是127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他的服务器连接,则需要注释掉这个或者把IP改成本机地址,可以用逗号分隔的列表绑定多个IP地址。
    
    bind_ip = 0.0.0.0
    

    maxConns:

    最大连接数。默认值:取决于系统限制。MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系统限制为准。这对于客户端创建很多集合,允许连接超时而不关闭集合的时候,很有用。
    控制流量峰值时的连接。
    ps:不能设置该值大于20000。
    
    eg: maxConns = 100
    

    objcheck:

    强制验证客户端请求。强制验证客户端请求,确保客户端绝不插入无效文件到数据库中。对于嵌套文档的对象,会有一点性能影响。
    
    eg: objcheck = true 或 noobjcheck = false
    

    logpath:

    指定日志文件,该文件将保存所有的日志记录,诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend,重启则日志会进行覆盖操作。
    
    logappend:写日志的模式,设置为true为追加。默认时覆盖。如果未指定此设置,启动时MongoDB将覆盖现有的日志文件。
    logappend = true
    

    syslog:

    日志输出都发送到主机的syslog系统,而不是标准输出到logpath指定日志文件。syslog和logpath不能一起用,会报错:Cant use both a logpath and syslog
    

    pidfilepath = /var/run/mongo.pid:

    进程ID,没有指定则启动时就没有PID文件,默认缺省。
    
    pidfilepath = /var/run/mongo.pid
    

    ps: 平时用一点查一点,然后记一点,再加上一些自己遇到的查官方文档,最后汇聚成这样的一篇博客。若觉得有冒犯的,请私信或者留言,会著名。

  • 相关阅读:
    OGG for sqlserver engryption && insert/delete
    MySQL中SQL_CALC_FOUND_ROWS的用法
    VMWARE 虚拟机新增硬盘,格式化分区,并挂载
    Mycat实战之数据迁移(oracle -- mysql)
    MYCAT实战之分片迁移
    mycat实战之性能测试
    Mycat实战之主键数据库自增方式
    对象的创建与克隆
    c#调用c++的dll,错误篇
    java 模拟消息的发送功能
  • 原文地址:https://www.cnblogs.com/shu-sheng/p/13992529.html
Copyright © 2011-2022 走看看