美文网首页
mongodb基本操作指令

mongodb基本操作指令

作者: 山口肅彧 | 来源:发表于2018-08-22 18:18 被阅读0次

    基本操作:

    帮助

    help
    KEYWORDS.help
    KEYWORDS.[TAB]
    

    不同级别和命令

    db 数据库管理操作有关         db.help()  
    sh 和shard分片有关的命令      sh.help()  
    rs  复制集管理有关的命令      rs.help()  
    

    常用操作查看当前db版本

    test> db.version()
    3.2.6
    

    显示当前数据库

    test>db
    test
    或
    >db.getName()
    test
    

    查询所有数据库

    test> show dbs  (==show databases)  
    local  0.000GB  
    

    切换数据库

    > use local
    switched to db local  
    

    显示当前数据库状态,查看local数据

    test> use local  
    switched to db local  
    local> db.stats()
    

    查看当前数据库的连接机器地址

    > db.getMongo()
    connection to 127.0.0.1
    

    指定数据库进行连接:(默认连接本机test数据库)

    # mongo 192.168.1.24/admin
    [mongod@mongodb ~]$ mongo 192.168.1.24/admin
    MongoDB shell version: 3.2.6
    connecting to: 192.168.1.24/admin
    admin> 
    

    创建数据库:当use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。
    --删除数据库:(如果没有选择任何数据库,会删除默认的test数据库)

    删除test数据库

    test> show dbs
    local  0.000GB
    test   0.000GB
    test> use test
    switched to db test
    test> db.dropDatabase()
    { "dropped" : "test", "ok" : 1 }
    

    集合操作(表操作)

    • 创建集合

      • 方法1:手动创建

          admin>use app
          switched to db app
          app>db.createCollection('a')
          { "ok" : 1 }  
          app>db.createCollection('b')
          { "ok" : 1 }  
          >show collections  
          //查看当前数据下的所有集(==show tables)  
          a  
          b  
          或
          db.getCollectionNames()
          [ "a", "b" ]
        
      • 方法2:当插入一个文档的时候,一个集合就会自动创建。

          admin> use app  
          switched to db app  
          app>db.c.insert({username:"mongodb"})  
          WriteResult({ "nInserted" : 1 })  
          app> show collections  
          a  
          b  
          c  
          app> db.c.find()  
          { "_id" : ObjectId("5743c9a9bf72d9f7b524713d"), "username" : "mongodb" }  
          **或者使用db.c.find().pretty()来优化显示效果**
        
    • 删除集合

        app> use app
        switched to db app
        app> db.log.drop()  
        //删除集合
      
    • 重命名集合

    把log改名为log1

        app> db.log.renameCollection("log1")  
        { "ok" : 1 }  
        app> show collections   
        a
        b  
        c  
        log1  
    
    • for循环插入数据

        app> for(i=0;i<100;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
      
    • 查询集合中的记录数

        app> db.log.find()
        //查询所有记录
      

      注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
      设置每页显示数据的大小:
      DBQuery.shellBatchSize=50; //每页显示50条记录

        app> db.log.find({uid:'50'})   
        //查询uid位50的记录,相当于mysql的where条件
        app> db.log.findOne()   
        //查看第1条记录
        app> db.log.count()  
        //查询总的记录数
      
    • 删除集合中的记录数

        app> db.log.remove({})  
        //删除集合中所有记录
        db.log.distinct("name")  
        //查询去掉当前集合中某列的重复数据:
        [ "mm" ]
      
    • 查看集合存储信息

        app>db.log.stats()
        app> db.log.dataSize()  
        //集合中数据的原始大小  
        app> db.log.totalIndexSize()  
        //集合中索引数据的原始大小
        app>db.log.totalSize()  
        //集合中索引+数据压缩存储之后的大小
        app> db.log.storageSize()  
        //集合中数据压缩存储的大小
      

    SQL语言与CRUD语言对照

    SQL Schema Statements MongoDB Schema Statements
    CREATE TABLE users (id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30),age Number,status char(1),PRIMARY KEY (id)) Implicitly created on firstinsert()operation. The primary key_idisautomatically added if_idfield is not specified.db.users.insert( {user_id: "abc123",age: 55,status: "A"} ) However, you can also explicitly create a collection: db.createCollection("users")
    ALTER TABLE users ADD join_dateDATETIME 在Collection 级没有数据结构概念。然而在document级,可以通过set在update操作添加列到文档中。 db.users.update({ },{set: { join_date: new Date() } },{ multi: true })
    ALTER TABLE usersDROP COLUMN join_date 在Collection 级没有数据结构概念。然而在document级,可以通过unset在update操作从文档中删除列。db.users.update({ },{unset: { join_date: "" } },{ multi: true })
    CREATE INDEX idx_user_id_asc ON users(user_id) db.users.createIndex( { user_id: 1 } )
    CREATE INDEX idx_user_id_asc_age_desc ON users(user_id, age DESC) db.users.createIndex( { user_id: 1, age: -1 } )
    DROP TABLE users db.users.drop()
    插入语句
    SQL INSERT Statements MongoDB insert() Statements
    INSERT INTO users(user_id,age,status)VALUES ("bcd001",45,"A") db.users.insert({ user_id: "bcd001", age: 45, status:"A" })
    查询类语句
    SQL SELECT Statements MongoDB find() Statements
    SELECT * FROM users db.users.find()
    SELECT id,user_id,status FROM users db.users.find({ },{ user_id: 1, status: 1, _id: 0 })
    SELECT user_id, status FROM users db.users.find({ },{ user_id: 1, status: 1 })
    SELECT * FROM usersWHERE status = "A" db.users.find({ status: "A" })
    SELECT user_id, status FROM users WHERE status = "A" db.users.find({ status: "A" },{ user_id: 1, status: 1, _id: 0 })
    数据更新操作
    SQL Update Statements MongoDB update() Statements
    UPDATE users SET status = "C" WHERE age > 25 db.users.update({ age: { gt: 25 } },{set: { status: "C" } },{ multi: true })
    UPDATE users SET age = age + 3 WHERE status = "A" db.users.update({ status: "A" } ,{ $inc: { age: 3 } },{ multi: true })
    数据库删除操作
    DELETE FROM usersWHERE status = "D" db.users.remove( { status: "D" } )
    DELETE FROM users db.users.remove({})

    用户权限管理

    创建管理员用户

    • (1)创建用户

        use admin
        db.createUser(
        {
            user: "root",
            pwd: "root",
            roles: [ { role: "root", db: "admin" } ]
        }
        )
      

      注意:
      1、创建管理员角色用户的时候,必须要到admin下创建
      2、删除的也要到相应的库下操作

        use  admin  
        db.dropuser('root');
      
    • (2)验证

        db.auth("root","root")
      
    • (3)配置文件开启auth验证

        cat >>mongodb.conf<<EOF
        security:
        authorization: enabled 
        EOF
      
    • (4)重启mongodb
      测试用户可用性:

        [mongod@db01 ~]$ mongo -uroot -proot admin    
      

      注意:用户在哪个数据库下创建的,最后加上什么库,数据库内验证:

        [mongod@db01 ~]$ mongo 
        > use admin
        > db.auth("root","root")
      

    2、按生产需求创建应用用户

    • 例1.创建对某库的只读用户--test

      • 创建对某库的只读用户

          use test
          db.createUser(
          {
            user: "test",
            pwd: "test",
            roles: [ { role: "read",   db: "test" } ]
          }
          )
          db.auth("test","test")
          show  users;
        
      • 登录test用户,并测试

          db.createCollection('b')
        
    • 例2.创建某库的读写用户

        db.createUser(
          {
            user: "test1",
            pwd: "test1",
            roles: [ { role: "readWrite", db:         "test" } ]
          }
        )
        show users;
        db.auth("test1","test1")
      
    • 例3.创建 分别对多库的不同权限的用户

        use app
        db.createUser(
        {
        user: "app03",
        pwd: "app03",
        roles: [ { role: "readWrite", db:             "app", } ]
        }
        )
      
    • 例4.删除用户

    删除app01用户:先登录到admin数据库

    mongo -uroot –proot 192.168.1.24/admin  
    use app  
    db.dropUser("app01")
    

    相关文章

      网友评论

          本文标题:mongodb基本操作指令

          本文链接:https://www.haomeiwen.com/subject/tmgyiftx.html