NoSQL学习笔记(二)插入语句


MongoDB安全访问

MongoDB安全访问跟SQL很像,都是靠给不同的用户权限。
创建用户和权限

  • 管理用户:

    use admin;
    db.createUser({
      user :'root',
      pwd : '123456',
      roles : [
          {
              role:'userAdminAnyDatabase',  //任何数据库的用户管理权限
              db:'admin'
          },
          {
              role:'readWriteAnyDatabase',  //任何数据库的读写权限
              db:'admin'
          }
      ]
    });
  • 普通用户

    use skdb;
    db.createUser({
      user:'mysk',
      pwd:'123456',
      roles:[
          {
              role:'dbAdmin',    //某数据库的管理权限
              db:'skdb'
          },
          {
              role:'readWrite',  //某数据库的读写权限
              db:'skdb'
          }
      ]
    })

开启安全配置

vi /etc/mongo.conf

开启:

security:
  authorization: enabled

重启MongoDB
安全访问(客户端、程序)程序

    <!--配置mongodb信息-->
    <mongo:mongo-client id="mongo" host="10.211.55.7" port="27017" credentials="用户名:密码@数据库"/>
    <mongo:db-factory id="mongoDbFactory"
                      dbname="skdb"
                      mongo-ref="mongo"/>

MongoDB基本命令

show dbs;//显示所有数据库
use db;//db为数据库名,用于切换或创建数据库
show tables;//显示当前数据库所有表
db.dropDatabase();//删库

MongoDB基本查询操作

  • insertOne()语法

    db.collection.insertOne(
     <document>,
     {
        writeConcern: <document>
     }
    )

    案例

    db.students.insertOne(
      {
          stuname:'小明',
          stuage:18,
          stusex:'男'
      }
    )
  • insertMany()语法

    db.collection.insertMany(
     [ <document 1> , <document 2>, ... ],
     {
        writeConcern: <document>,
        ordered: <boolean>
     }
    )

    案例:

    db.students.insertMany(
    [
      {
          stuname:'小赵',
          stuage:23,
          stusex:'男'
      },
      {
          stuname:'小王',
          stuage:22,
          stusex:'女'
      },
      {
          stuname:'小黑',
          stuage:25,
          stusex:'男'
      }
    ]
    )

    必须要加中括号,因为传入的数据要是一个文档list(就算插入一个也要用list[]框起来)

  • insert()
    可以插入一条,也可以插入多条

    db.students.insertMany(
    [
      {
          stuname:'小赵',
          stuage:23,
          stusex:'男'
      },
      {
          stuname:'小王',
          stuage:22,
          stusex:'女'
      },
      {
          stuname:'小黑',
          stuage:25,
          stusex:'男'
      }
    ]
    )

技术选型

  1. 在使用脚本处理时,优先使用insert()
  2. 在编程代码时,使用insertOne()insertMany()

插入时间类型(三种方式)

  • new Date()方式

    db.students.insert([
      {
          stuname:'小赵',
          stuage:23,
          stusex:'男'
          addtime:new Date()
      }
    ])

    时间是格林尼治时间,北京时间上午11点插入,数据显示凌晨3点。

  • ISODate()

    db.students.insert([
      {
          stuname:'小吕',
          stuage:29,
          stusex:'男',
          addtime:ISODate('2020-03-10T03:20:20Z')
      }
    ])
  • $currentDate(一个修改器)

    db.students.update(
    {stuname:'小托'},
    {
      $set:
      {
          stuage:23
      },
      $currentDate:{addtime:true}
    })

    new Date()是客户端当前时间,而$currentDate()获取的是服务器端时间

技术选型:

  • 当插入客户端时间时,用new Date()
  • 当插入服务器端时,用$currentDate()
  • 当插入固定时间时,用ISODate()

声明:奋斗小刘|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - NoSQL学习笔记(二)插入语句


Make Everyday Count