mongoDB的shell的基本操作

來源:互聯網
上載者:User

開啟shell

首先啟動服務端mongod --dbpath d:\app\mongodata

然後開啟shell:mongo localhost:27017

預設是以test使用者操作,我們可以通過mongo localhost:27017/admin 增大許可權

1.建立一個資料庫

use [databaseName]

但是若什麼也不做就退出的話這個空資料庫會被刪除

2.查看所有資料庫

show dbs

3.給指定資料庫添加集合并且添加記錄

db.[documentName].insert({...})

 

1.插入文檔

   db.[documentName].insert({})

2.批量插入文檔

         shell 這樣執行是錯誤的 db.[documentName].insert([{},{},{},……..])

        shell 不支援批量插入

        想完成批量插入可以用mongo的應用驅動或是shell的for迴圈

3.Save操作

         save操作和insert操作區別在於當遇到_id相同的情況下

         save完成儲存操作

         insert則會報錯

 

4.查看資料庫中所有文檔

show collections

5.查詢制定文檔的資料

    查詢所有:db.[documentName].find()

    查詢第一條資料:db.[documentName].findOne()

6.更新文檔資料

db.[documentName].update({查詢條件},{更新內容})

例子:

var p=db.persons.findOne();

db.persons.update(p,{name:"zhang"});

 

1.強硬的文檔替換式更新操作

   db.[documentName].update({查詢器},{修改器})

        強硬的更新會用新的文檔代替老的文檔

2.主鍵衝突的時候會報錯並且停止更新操作

        因為是強硬替換當替換的文檔和已有文檔ID衝突的時候 ,則系統會報錯

3.insertOrUpdate操作

        目的:查詢器查出來資料就執行更新操作,查不出來就替換操作

     做法:db.[documentName].update({查詢器},{修改器},true)

4.批次更新操作

         預設情況當查詢器查詢出多條資料的時候預設就修改第一條資料

        如何?批量修改

        db.[documentName].update({查詢器},{修改器},false, true)

 

7.刪除文檔中的資料

db.[documentName].remove({...})

例子:

db.persons.remove({name:"zhang"})

 

1.刪除列表中所有資料

    db.[documentName].remove()

        集合的本身和索引不會別刪除

2.根據條件刪除

       db.[documentName].remove({})

    刪除集合text中name等於uspcat的紀錄

        db.text.remove({name:”uspcat”})

3.小技巧

        如果你想清楚一個資料量十分龐大的集合

       直接刪除該集合并且重建立立索引的辦法

       比直接用remove的效率和高很多

 

8.使用修改器來完成局部更新操作

 

 

. runCommand函數和findAndModify函數

   runCommand可以執行mongoDB中的特殊函數

   findAndModify就是特殊函數之一他的用於是返回update或remove後的文檔

    runCommand({“findAndModify”:”processes”,

        query:{查詢器},

  sort{排序},

   new:true

  update:{更新器},

  remove:true

      }).value

        ps = db.runCommand({

              "findAndModify":"persons",

              "query":{"name":"text"},

       "update":{"$set":{"email":"1221"}},

        "new":true

}).value

ps)

9.$addToSet與$each結合完成批量數組更新

    db.text.update({_id:1000},{$addToSet:{books:{$each:[“JS”,”DB”]}}})

         $each會迴圈後面的數組把每一個數值進行$addToSet操作

10.存在分配與查詢效率

     當document被建立的時候DB為其分配記憶體和預留記憶體,當修改操作

         不超過預留內層的時候則速度非常快,超過了就要分配新的記憶體

      則會消耗時間

11. 刪除庫中的集合  db.[documentName].drop()

      刪除資料庫  db.dropDatabase()

12.shell裡面的help

全域的help,資料庫相關的db.help(),集合相關的db.[documentName].help()

 

註:shell用戶端內建了js引擎!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.