mongodb基本操作指令

基本操作:

幫助

help
KEYWORDS.help
KEYWORDS.[TAB]

不同級別和命令

db 數(shù)據(jù)庫管理操作有關(guān)         db.help()  
sh 和shard分片有關(guān)的命令      sh.help()  
rs  復(fù)制集管理有關(guān)的命令      rs.help()  

常用操作查看當(dāng)前db版本

test> db.version()
3.2.6

顯示當(dāng)前數(shù)據(jù)庫

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

查詢所有數(shù)據(jù)庫

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

切換數(shù)據(jù)庫

> use local
switched to db local  

顯示當(dāng)前數(shù)據(jù)庫狀態(tài),查看local數(shù)據(jù)

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

查看當(dāng)前數(shù)據(jù)庫的連接機器地址

> db.getMongo()
connection to 127.0.0.1

指定數(shù)據(jù)庫進行連接:(默認連接本機test數(shù)據(jù)庫)

# 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> 

創(chuàng)建數(shù)據(jù)庫:當(dāng)use的時候巩趁,系統(tǒng)就會自動創(chuàng)建一個數(shù)據(jù)庫舟陆。如果use之后沒有創(chuàng)建任何集合消返。系統(tǒng)就會刪除這個數(shù)據(jù)庫丸冕。
--刪除數(shù)據(jù)庫:(如果沒有選擇任何數(shù)據(jù)庫歹撒,會刪除默認的test數(shù)據(jù)庫)

刪除test數(shù)據(jù)庫

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

集合操作(表操作)

  • 創(chuàng)建集合

    • 方法1:手動創(chuàng)建

        admin>use app
        switched to db app
        app>db.createCollection('a')
        { "ok" : 1 }  
        app>db.createCollection('b')
        { "ok" : 1 }  
        >show collections  
        //查看當(dāng)前數(shù)據(jù)下的所有集(==show tables)  
        a  
        b  
        或
        db.getCollectionNames()
        [ "a", "b" ]
      
    • 方法2:當(dāng)插入一個文檔的時候拉岁,一個集合就會自動創(chuàng)建铣墨。

        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()來優(yōu)化顯示效果**
      
  • 刪除集合

      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循環(huán)插入數(shù)據(jù)

      app> for(i=0;i<100;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
    
  • 查詢集合中的記錄數(shù)

      app> db.log.find()
      //查詢所有記錄
    

    注:默認每頁顯示20條記錄,當(dāng)顯示不下的的情況下级解,可以用it迭代命令查詢下一頁數(shù)據(jù)。
    設(shè)置每頁顯示數(shù)據(jù)的大刑锇蟆:
    DBQuery.shellBatchSize=50; //每頁顯示50條記錄

      app> db.log.find({uid:'50'})   
      //查詢uid位50的記錄勤哗,相當(dāng)于mysql的where條件
      app> db.log.findOne()   
      //查看第1條記錄
      app> db.log.count()  
      //查詢總的記錄數(shù)
    
  • 刪除集合中的記錄數(shù)

      app> db.log.remove({})  
      //刪除集合中所有記錄
      db.log.distinct("name")  
      //查詢?nèi)サ舢?dāng)前集合中某列的重復(fù)數(shù)據(jù):
      [ "mm" ]
    
  • 查看集合存儲信息

      app>db.log.stats()
      app> db.log.dataSize()  
      //集合中數(shù)據(jù)的原始大小  
      app> db.log.totalIndexSize()  
      //集合中索引數(shù)據(jù)的原始大小
      app>db.log.totalSize()  
      //集合中索引+數(shù)據(jù)壓縮存儲之后的大小
      app> db.log.storageSize()  
      //集合中數(shù)據(jù)壓縮存儲的大小
    

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 級沒有數(shù)據(jù)結(jié)構(gòu)概念。然而在document級掩驱,可以通過set在update操作添加列到文檔中芒划。 db.users.update({ },{set: { join_date: new Date() } },{ multi: true })
ALTER TABLE usersDROP COLUMN join_date 在Collection 級沒有數(shù)據(jù)結(jié)構(gòu)概念。然而在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 })
數(shù)據(jù)更新操作
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 })
數(shù)據(jù)庫刪除操作
DELETE FROM usersWHERE status = "D" db.users.remove( { status: "D" } )
DELETE FROM users db.users.remove({})

用戶權(quán)限管理

創(chuàng)建管理員用戶

  • (1)創(chuàng)建用戶

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

    注意:
    1、創(chuàng)建管理員角色用戶的時候涮帘,必須要到admin下創(chuàng)建
    2拼苍、刪除的也要到相應(yīng)的庫下操作

      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    
    

    注意:用戶在哪個數(shù)據(jù)庫下創(chuàng)建的,最后加上什么庫,數(shù)據(jù)庫內(nèi)驗證:

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

2调缨、按生產(chǎn)需求創(chuàng)建應(yīng)用用戶

  • 例1.創(chuàng)建對某庫的只讀用戶--test

    • 創(chuàng)建對某庫的只讀用戶

        use test
        db.createUser(
        {
          user: "test",
          pwd: "test",
          roles: [ { role: "read",   db: "test" } ]
        }
        )
        db.auth("test","test")
        show  users;
      
    • 登錄test用戶疮鲫,并測試

        db.createCollection('b')
      
  • 例2.創(chuàng)建某庫的讀寫用戶

      db.createUser(
        {
          user: "test1",
          pwd: "test1",
          roles: [ { role: "readWrite", db:         "test" } ]
        }
      )
      show users;
      db.auth("test1","test1")
    
  • 例3.創(chuàng)建 分別對多庫的不同權(quán)限的用戶

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

刪除app01用戶:先登錄到admin數(shù)據(jù)庫

mongo -uroot –proot 192.168.1.24/admin  
use app  
db.dropUser("app01")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市同蜻,隨后出現(xiàn)的幾起案子棚点,更是在濱河造成了極大的恐慌,老刑警劉巖湾蔓,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘫析,死亡現(xiàn)場離奇詭異,居然都是意外死亡默责,警方通過查閱死者的電腦和手機贬循,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桃序,“玉大人杖虾,你說我怎么就攤上這事∶叫埽” “怎么了奇适?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芦鳍。 經(jīng)常有香客問我嚷往,道長,這世上最難降的妖魔是什么柠衅? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任皮仁,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贷祈。我一直安慰自己趋急,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布势誊。 她就那樣靜靜地躺著呜达,像睡著了一般。 火紅的嫁衣襯著肌膚如雪键科。 梳的紋絲不亂的頭發(fā)上闻丑,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音勋颖,去河邊找鬼。 笑死勋锤,一個胖子當(dāng)著我的面吹牛饭玲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叁执,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茄厘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谈宛?” 一聲冷哼從身側(cè)響起次哈,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吆录,沒想到半個月后窑滞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡恢筝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年哀卫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撬槽。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡此改,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侄柔,到底是詐尸還是另有隱情共啃,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布暂题,位于F島的核電站移剪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敢靡。R本人自食惡果不足惜挂滓,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赶站,春花似錦幔虏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烙博,卻和暖如春瑟蜈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渣窜。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工铺根, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乔宿。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓位迂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親详瑞。 傳聞我的和親對象是個殘疾皇子掂林,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,930評論 2 89
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常坝橡。 O...
    我想起個好名字閱讀 5,311評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理泻帮,服務(wù)發(fā)現(xiàn),斷路器计寇,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 七月一號下午坐的五點多的火車锣杂,由濟南出發(fā),開往張家界饲常,停站在月山下車蹲堂。對面坐的是一個拉拉。很瘦贝淤,穿著黑色短袖柒竞,灰色...
    達浪打啦閱讀 211評論 0 0
  • 今天上午外面真冷啊,媽媽帶著我和弟弟在小區(qū)玩得開心播聪,媽媽說要去給弟弟買藥朽基。弟弟有點感冒了。中午吃的麻辣燙离陶,我感覺麻...
    魏雅軒閱讀 52評論 0 0