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
myCollection
user
>
其中,show collections 表示顯示當前操作數據庫內的所有集合。
1.2、刪除集合
MongoDB 用 db.collection.drop() 刪除集合
格式
db.COLLECTION_NAME.drop()
如果刪除成功返回true,否則,返回false
范例
刪除剛才創建的myCollection集合,並顯示刪除后的集合列表,驗證是否刪除成功
>db.myCollection.drop() true >show collections user >
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({})
業精於勤,荒於嬉;行成於思,毀於隨。
如果你覺得這篇文章不錯或者對你有所幫助,可以通過右側【打賞】功能,給予博主一點點鼓勵和支持
