美文网首页
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