mongoDB更新和刪除文檔(document)

整理來自mongodb

https://www.shiyanlou.com/courses/running/57數據庫

 

啓動ruby

$ sudo service mongodb start 

進入MongoDB命令行操做界面,在命令行中敲exit能夠退出bash

$ mongo 

實驗中的布爾類型的ture用1代替,false用0代替markdown

 

建立數據庫

範例:進入mongoDB命令行操做界面以後,進行以下操做:app

> use Chenshi switched to db Chenshi 

您可使用db命令查看您當前選擇的數據庫函數

> db Chenshi 

您也能夠經過使用show dbs命令查看全部的數據庫spa

> show dbs 

在這條命令以後您剛纔建立的Chenshi不會顯示,這隻有在您像數據庫中插入了數據以後才能顯示命令行

 

刪除數據庫 -db.dropDatabase()

假設剛纔咱們使用語句db.computer.insert({"name":"shiyanlou"})對數據庫Chenshi進行了數據插入操做code

> show dbs      #顯示當前系統中的全部數據庫 > use Chenshi #轉到Chenshi數據庫 switched to db Chenshi > db.dropDatabase() {"dropped":"Chenshi","ok":1} > show dbs

建立集合 -createCollection()

語法:

db.createCollection(name,options)

參數描述:

  • name:建立的集合名稱
  • options:是一個做爲初始化的文檔(可選)

範例:

> db.createCollection("shiyanlou") #無參數 { "ok" : 1 } > show collections shiyanlou system.indexes > db.createCollection("shiyanlou2", { capped : 1, autoIndexID : 1, size : 6142800, max : 10000 } ) #帶參數 { "ok ": 1 } 

參數描述:

  • capped:類型爲Boolean,若是爲ture則建立一個固定大小的集合,當其條目達到最大時能夠自動覆蓋之前的條目。在設置其爲ture時也要指定參數大小;
  • autoIndexID:類型爲Boolean,默認爲false,若是設置爲ture,則會在_id field.s上自動建立索引;
  • size:若是capped爲ture須要指定,指定參數的最大值,單位爲byte;
  • max:指定最大的文檔數。 在mogodb中也能夠不用建立集合,由於在建立文檔的時候也會自動的建立集合

刪除集合 -db.COLLECTION.drop()

操做實例:

> use Chenshi switched to db Chenshi > show collections shiyanlou shiyanlou2 system.indexes > db.shiyanlou.drop() ture > show collections shiyanlou2 system.indexes 

刪除成功

注意:當您要刪除指定的集合時,用您想要刪除的集合名稱替代COLLECTION便可

 

插入文檔 -db.COLLECTION_NAME.insert(document)

操做實例:

> userdoc1=({"user_id":1,"name":"cloud","state":"active","actor":"user","e-mail":" test@qq.com","VM_num":2,"time":[{"date":"2014-08-12","hour":"10:53 PM"}] }) > userdoc2=({"user_id":2,"name":"testadmin","state":"active","actor":"admin","e-mail":" test@qq.com","VM_num":2,"time":[{"date":"2014-08-11","hour":"06:34 AM"}] }) > doc1=({"name":"peter","position":"teacher"}) #先定義文檔 > use Chenshi switched to db Chenshi > db.shiyanlou.insert(userdoc1) WriteResult({"nInserted":1}) > db.shiyanlou.insert(userdoc2) WriteResult({"nInserted":1}) > db.shiyanlou.insert(doc1) WriteResult({"nInserted":1}) 

插入文檔成功,固然也能夠直接將文檔的內容做爲函數的參數直接替代document

更新文檔 -db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)

操做實例:

> db.shiyanlou.update({"user_id":"02","e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}}) WriteResult({"nMatched":1,"nUpserted":1,"nModified":1}) > db.shiyanlou.find() 
  • 將user_id=2的文檔的e-mail改成group@qq.com
  • 第一個大括號內容標示查找條件,第二個大括號內容則表示更新後的數據
  • 默認的update函數只對一個文檔更新,若是想做用全部文檔,則須要加入multi:ture

操做實例:

db.shiyanlou.update({"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}},{multi:ture})
 

替換已存在的文檔 -db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

操做實例:

> db.shiyanlou.save({"_id":ObjectId("53ea174ccb4c62646d9544f4"),"name":"Bob","position":"techer"}) WriteResult({"nMatched":1,"nUpserted":1,"nModified":1}) 

跟update差很少,可是update更好用



刪除文檔 -db.COLLECTION_NAME.remove(DELECTION_CRITERIA)

操做實例:

> db.shiyanlou.remove({"name":"Bob"}) WriteResult({"nRemoved":1}) 

其實remove函數的參數跟update函數的第一個參數同樣,至關於查找條件,注意,不要誤刪!

刪除後能夠用查找命令確認數據:

> db.shiyanlou.find()
相關文章
相關標籤/搜索