標籤:style blog http ar color sp strong on 資料
在上篇博文mongodb已經成功啟動:http://blog.csdn.net/u010773667/article/details/41847487,接下來就該進行一系列操作了。我們再開一個cmd,輸入【mongo】命令開啟shell即mongodb的用戶端,預設串連的是“test”資料庫,我這裡設定集合(表)為student。圖一:
1. 添加insert
文法:db.集合.insert({“Col1”:”列值1”,”Col2”:”列值2”,…,”Coln”:”列值n”})
2. 尋找find
2.1全部查詢
文法:db.集合.find()
2.2條件查詢
文法:db.集合.find({“Col1”:”列值1”,”Col2”:”列值2”,…,”Coln”:”列值n”})
操作樣本:添加+尋找
注意:“_id"這個欄位是資料庫預設給我們加的GUID,目的是保證資料的唯一性。
3.修改
3.1全部修改update
文法:db.集合.update({“Col”:”列值”},{”Col2”:”列值2”,…,”Coln”:”列值n”})
注意:
第一個參數{…}為“尋找的條件”,第二個參數{…}為“要更新的值”;
Update()為全部修改,第二個參數中需要包含全部的”欄位”,否則更新後會造資料的丟失,具體影響請見樣本。
操作樣本:全部修改+錯誤執行個體
3.2.局部修改
Mongodb中為局部修改提供了兩個修改器: $inc 和 $set。
① $inc修改器
$inc即increase的縮寫,自增$inc指定的值,如果“文檔”中沒有此key,則會建立key。
文法:db.集合.update({"col1":"列值1"},{$inc:{"col2":"列值2",...,"coln":"列值n"}}
② $ set修改器
直接將對應的資料替換為$set指定的值。
文法:db.集合.update({"col1":"列值1"},{$set:{"col2":"列值2",...,"coln":"列值n"}})
操作樣本:局部修改+進階修改
3.3 upsert操作
Upsert=update+insert,智能判斷更新或添加,所以我更願意稱之為進階修改。也就是說:如果查到了文檔直接更新,否則在資料庫裡面新增一條。 將update的第三個參數設為true即可。操作樣本見。
文法:db.集合.update({"Col":"列值"},{$inc:{"Col2":"列值2",…,"Coln":"列值n"}},true)
3.4批量修改
在前面幾個的基礎上進行改進,不在多做解釋。
文法:db.集合.update({"Col":"列值"},{$inc:{"Col2":"列值2",…,"Coln":"列值n"}},true,true)
操作樣本:批量修改
4.刪除remove
文法:db.集合.remove()
db.集合.remove({"Col":"列值"},{"Col2":"列值2",…,"Coln":"列值n"})
操作樣本:刪除
(5~6為進階操作,不做詳細介紹)
5.分組查詢group
操作樣本:分組尋找
6.除重distinct
7.統計count
操作樣本:除重+統計
以上是我操作後的執行個體分享,再次操作一遍感覺收穫的更多。還記得剛開始動手操作的時候,關於修改部分只接觸了全部修改,當時那時候還以為跟其他資料庫操作一樣修改就是一個update()方法,所以實踐的時候就直接進行了部分修改,後果就像圖中顯示的一樣造成了資料丟失。當時還在想“不會吧,難道只修改一兩個欄位還要把所有的都寫上嗎?這也太麻煩了吧。。。”,後來跟旁邊的大神周響師哥討論他告訴我mongodb修改有兩種方法也就是上文提到的mongodb專門封裝的部分修改的方法。當時貌似當時走了彎路,不過現在想想真的是彎路嗎?
MongoDB入門篇--增刪改查