1. 創建實驗用的數據庫和集合
建立實驗用數據庫 student中 stuinfo集合
# use student
# db
# db.createCollection("'stuinfo")
2. 插入文檔
(1) 方法一使用 insert
db.stuinfo.insert({_id:001,name:'alice',age:18})
(2) 方法二使用 save
db. COLLECTION_NAME.save (<document>, {writeConcern:<document>})
參數説明:
- document:文檔數據。
- writeConcern:可選,拋出異常的級別。
db.stuinfo.save({_id:001,name:'alice',age:18})
(3) 方法三 批量插入多個文檔
db.stuinfo.insert([
{_id:001,name:'alice',age:18},
{_id:002,name:'test',age:18}
])
查看集合數據 db.stuinfo.find()
(4) 可以先將文檔定義為一個變量,然後再進行插入
> s={_id:5,name:'jack',age:19}
> db.stuinfo.insert(s)
操作結果如下圖所示:
3. 更新文檔
(1) 使用 update 方法用於更新已存在的文檔。語法格式如下:
db.COLLECTION_NAME.update (<criteria>,<objNew>,upsert, multi, writeConcern)
參數説明:
- criteria:update 的查詢條件,類似 sql update 查詢內 where 後面的條件。
- objNew:update 的對象和一些更新的操作符(如$,$inc...)等,也可以理解為 sql update 查詢內 set 子句的內容
- upsert:可選,如果不存在 update 的記錄,是否插入 objNew,true為插入,默認 false,不插入
- multi:可選,mongodb 默認 false,即只更新找到的第一條記錄,如果這個參數為 true,就把按條件查出來多條記錄全部更新。
- writeConcern:可選,拋出異常的級別。例如,通過update方法來更新上述文檔的姓名(name),將姓名(name)為"curry"的文檔更新為了"李四”,可以執行命令:
db.stuinfo.update({name:'curry'},{$set:{name:'rose'}})
通過 find() 查看修改是否成功,具體操作步驟如下所示:
以上語句只會修改第一條發現的文檔,如果要修改多條相同的文檔,則需要設置 multi 參數為 true。
db.stuinfo.insert([{_id:006,name:'nancy',age:19},{_id:007,name:'nancy',age:18}])
db.stuinfo.find()
db.stuinfo.update({name:'nancy'},{$set:{name:'cherry'}}, false, true)
操作結果如下圖所示:
(2) 使用 save 方法通過傳入的文檔來替換已有文檔。語法格式如下:
db.COLLECTION_NAME.save(<document>,{writeConcern:<document>})
參數説明:
- document:文檔數據。
- writeConcern:可選,拋出異常的級別。
例如,要替換”_id”為"2"的文檔的數據,可以執行下列命令:
db.stuinfo.save({_id:6,name:'miller',age:20})
操作步驟如下圖所示:
(3) 數據更新操作符
- $set 操作符用來指定一個鍵的值,如果這個字段不存在,則創建它。
語法:{$set:{field:value}})
作用:把文檔中某個 field 的值設為 value。 - $inc 操作符用來增加或減少已有鍵的值,如果該鍵不存在則創建一個。
語法:{$inc:{field:value}}
作用:對一個數字類型的某個field增加value,只能用於整型、長整型或雙精度浮點型
的值。 - $unset 操作符用來刪除一個鍵。
語法:{$unset:{field:1}}
作用:刪除某個 field。
首先,創建一個實驗用的 col 集合,然後使用 JavaScript 腳本的循環語句依次插入9個文檔記錄。
db.createCollection("col")
for(var i=1;i<10;i++) db.col.insert({count:i,test2:false,test5:true})
-
只更新第一條滿足count>1的文檔記錄,將其test2的值設為"OK"。
db.col.update({"count":{$gt:1}}, {$set:{"test2": "Ok"}}) -
更新滿足count>3的文檔記錄,將其test2的值設為"OK"。
db.col.update({"count":{$gt:3}}, {$set:{"test2": "Ok"}},false,true) -
只更新第一條count>4的文檔記錄,將其test5的值設為"OK"。
db.col.update({"count":{$gt:4}}, {$set:{"test5": "Ok"}},true,false) -
更新全部滿足count>5的文檔記錄,將其test5的值設為"OK"。
db.col.update({"count":{$gt:5}}, {$set:{"test5": "Ok"}},true,true) -
更新全部滿足count>6的文檔記錄,將其count的值+1。
db.col.update({"count":{$gt:6}}, {$inc:{"count": 1}},false,true) -
只更新第一條滿足count>6的文檔記錄,將其count的值+1。
db.col.update({"count":{$gt:6}}, {$inc:{"count": 1}},false,false) -
只更新第一條滿足count>6的文檔記錄,將其count 刪除。
db.col.update({"count":{$gt:6}}, {$unset:{"count": 1}},false,false)
4. 刪除文檔
(1) 刪除集合中的全部文檔
刪除指定集合的全部文檔:db.col.deleteMany({}) 或 db.col.remove({})
(2) 刪除指定條件的文檔
刪除集合 stuinfo 中 name = "cherry" 的全部文檔。
db.stuinfo.deleteMany({'name':'cherry'})
刪除滿足條件 age = 18 的第一個文檔
db.stuinfo.deleteOne({'age':18})