MongoDB基礎教程系列--第三篇 MongoDB基本操作(二)

來源:互聯網
上載者:User

標籤:blog   mongod   參數   app   操作   mod   更新   ble   文檔   

1、集合操作

1.1、建立集合

MongoDB 用 db.createCollection(name, options) 方法建立集合。

格式

db.createCollection(name, options)

其中,name 是集合名稱,是一個字串;options 是可選項,是一個文檔,指定記憶體大小和索引等選項,具體參數說明如下表:

欄位 類型 說明
capped 布爾         (可選)如果為 true,表示為固定集合。固定集合是指具有固定儲存空間的集合。
當該值為 true 時,必須指定 size 參數。
autoIndexID 布爾 (可選)如果為 true,在 _id 欄位自動建立索引。預設為 false。
size 數值 (可選)為固定集合指定一個最大值(以位元組計)。
如果 capped 為 true,也需要指定該欄位。
max 數值 (可選)為固定集合指定文檔的最大數量。

註:1.如果 collection 達到最大儲存限制(size)之前達到最大文檔數量(max)會刪除舊文檔。

      2.MongoDB 會先檢查size值,然後再檢查max值

範例

建立一個集合"user",為欄位_id建立索引,最大儲存空間是10M,最大文檔數量為1000

>db.createCollection("user", { capped : true, autoIndexID : true, size : 10485760, max : 1000 } ){ "ok" : 1 }>

說明

在 MongoDB 中,可以不用createCollection()方法建立集合,是因為在插入文檔的時候,會自動建立集合

>db.myCollection.insert({"name" : "liruihuan"})WriteResult({ "nInserted" : 1 })>show collections              myCollectionuser>

其中,show collections 表示顯示當前操作資料庫內的所有集合。

1.2、刪除集合

MongoDB 用 db.collection.drop() 刪除集合

格式

db.COLLECTION_NAME.drop()

如果刪除成功返回true,否則,返回false

範例

刪除剛才建立的myCollection集合,並顯示刪除後的集合列表,驗證是否刪除成功

>db.myCollection.drop()true>show collectionsuser>
2、文檔操作

2.1、插入文檔

MongoDB 用 insert()或者save()向集合中插入文檔

格式

db.collection.insert(document)

範例

我們向集合"user"中插入{"name":"user1","age":19}文檔,插入之前先查詢集合"user"中存在的文檔,然後再查詢插入以後的所有文檔,以便確定是否插入成功

> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }> db.user.insert({"name":"user1","age":19})WriteResult({ "nInserted" : 1 })    # 插入一條資料> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" : "user1", "age" : 19 }>

文檔查詢用 find() 方法,下一篇會具體講解。

插入文檔也可以使用 db.collection.save(document) 命令。如果不指定 _id 欄位 save() 方法類似於 insert() 方法。如果指定 _id 欄位,則會更新該 _id 的資料。save() 方法會在下面 更新文檔 裡面用範例說明。

2.2、更新文檔

MongoDB 用 update() 或者 save() 更新集合中的文檔

2.2.1、update() 

update() 更新已經存在文檔的值

格式

db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

範例

在集合"user"中,將文檔原來的name值"user1"更新為"user2",更新之前先查詢集合"user"中存在的文檔,然後再查詢更新以後的所有文檔,以便確定是否更新成功

> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" : "user1", "age" : 19 }>db.user.update({‘name‘:‘user1‘},{$set:{‘name‘:‘user2‘}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 輸出資訊> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" : "user2", "age" : 19 }

上面範例只會更新第一條發現的文檔,若想更新全部發現的文檔,則需要用 multi:true ,具體寫法如下

db.user.update({‘name‘:‘user1‘},{$set:{‘name‘:‘user2‘}},{multi:true})

上文中用到了更新操作符$set,諸如此類的還有:$inc、$unset、$push、$ne等。感興趣的夥伴們可以到網上查查具體的含義。

2.2.2、save()

save() 方法通過傳入的文檔來替換已有文檔。

格式

db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

範例

用 _id = ‘58e1d2f0bb1bbc3245fa754b‘ 的文檔替換原來的文檔,更新之前先查詢集合"user"中存在的文檔,然後再查詢更新以後的所有文檔,以便確定是否更新成功

> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 } >db.user.save(   {      "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"user3", "age":20   })WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 輸出資訊> db.user.find() { "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "user3", "age" : 20 } 

2.3、刪除文檔

MongoDB 用 remove() 刪除集合中的文檔

格式

db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,justOne)

justOne 如果設為 true 或 1,則只刪除一個文檔。

範例

刪除 name 為 ‘user1‘ 的文檔,刪除之前先查詢集合"user"中存在的文檔,然後再查詢刪除以後的所有文檔,以便確定是否刪除成功

> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754c"), "name" : "user1", "age" : 19 }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 20 }>db.user.remove({"name":"user1"}) WriteResult({ "nRemoved" : 2 })      # 刪除了兩條資料 > db.user.find() 
{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18 }

如果只想刪除一條記錄,則需要設定 justOne 為 1,如下所示:

db.user.remove({"name":"user1"},1)

如果想刪除所有記錄,可以這樣寫

db.user.remove({})

 

業精於勤,荒於嬉;行成于思,毀於隨。

如果你覺得這篇文章不錯或者對你有所協助,可以通過右側【打賞】功能,給予博主一點點鼓勵和支援

MongoDB基礎教程系列--第三篇 MongoDB基本操作(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.