目錄:



前言:

在前一篇MongoDB CRUD1章節中,我們介紹mongo shell基本的操作與查詢指令,
在本篇,我們接簡單介紹insert, update, remove與drop常用指令。


執行步驟:

Insert:
MongoDB是以document的結構進行儲存,並沒有固定的綱要(schemaless),新增(Insert)的
過程中,若遇到新的欄位會自動建立(但並不是每筆資料都加上此欄位),比起關連式資料庫需要修改
資料結構,MongoDB更顯得有彈性。

基本指令如下:
db.people.insert({name:"alice",type:"student",age:20,array:[1,2,3,4,5]})




mongo shell 可以使用類似javascript的語法,您也可以使用下列方法輸入
var data = {name:"alan",type:"student",age:30,array:[6,7,8,9] }
db.people.insert(data)



您可以使用前一章節學習的查詢指令進行查詢
db.people.find()

db.people.find().pretty()




Update:
注意:在執行update指令必須非常小心,若沒有使用$set的指令指定更新哪個欄位,
update指令會將整筆資料進行更動(沒加上的欄位就直接清掉了),會造成資料遺失。

此外,Update有需多參數可以使用:
$set, $inc, $unset, $push, $pop, $pushAll, $addToSet, upsert, multi
我們將一項一項介紹:


基本指令如下:
db.people.update( { "type" : "student"},{ "type" : "engineer"},{ multi:true} )



您會發現:"哇,我的第一筆符合type = student 怎麼只剩下type的欄位"
承如我們剛開始提到的,若沒有使用$set的指令指定更新哪個欄位 ,
update指令會將整筆資料進行更動(沒加上的欄位就直接清掉了),會造成資料遺失。

$multi
仔細再看看,怎麼只有更改第一筆資料呢?(算是不幸中的大幸?)
原因是是沒有使用multi:true指令,mongodb會預設只更動一筆資料。
db.people.update( { "type" : "student"},{ "type" : "engineer"},{ $multi:true} )



$set
我們將資料還原,使用$set指令進行調整
update alice's age = 30
db.people.update( { "name": "alice" },{ $set : { age :30} })



$inc
add 1 to alice's age
db.people.update( { "name": "alice" },{ $inc : { age : 1 } })



$unset
remove alice's age data
db.people.update( { "name": "alice" },{ $unset : { age : 1 } })



$upsert
以目前為例,alice的age資料已經被移除了,我們再一次$set更新age,會因為找不到
這個欄位,而無法更新。
db.people.update( { "name": "alice" },{ $set : { age :25} })



但如果我們給與$upsert:true指令,若找不到這個欄位,則會自動新增資料
db.people.update( { "name" : "alice" },{ $set : { age :25} } , { $upsert:true })




Array的操作:
$push
db.people.update( { "name" : "alice" },{ $push: { array: 10 } })



$pop
移除最後一個資料
db.people.update( { "name" : "alice" },{ $pop: { array: 1 } })



移除第一個資料
db.people.update( { "name" : "alice" },{ $pop: { array: -1 } })



$pushAll
db.people.update( { "name" : "alice" },{ $pushAll: { array: [7,8,9] } })



$pull
移除指定資料
db.people.update( { "name" : "alice" },{ $pull: { array: 5 } })



$addToSet
加入資料(與$push效果相同)
db.people.update( { "name" : "alice" },{ $addToSet: { array: 5 } })




Remove:
移除資料指令如下:
移除某些資料(name為alice都移除)
db.people.remove ( { "name": "alice" })



移除全部資料
db.people.remove ( {  })




Drop:
刪除collection指令如下:
db.people.drop()





參考資料:

Mongodb官方網站

--
謝謝!