mongodb 基於crud(create,read,update,delete)方式實現了對集合上的文件進行增刪改查。對於集合上字段的增刪改,可以使用set或者unset修改器來實現。也可以使用文件替換的方式來實現。本文主要描述集合上字段的增刪改,以及基於選項upsert的更新。
a.語法描述
db.collection.update(
, //查詢或過濾條件
, //修改器(被修改鍵及內容)
//後面的3.2之後的語法引數基本相同
)其他的如updateone,updatemany等用法請參考:mongodb 文件更新
mongodb集合上所有的寫操作特性
原子性操作(單個文件級別原子性操作)
_id 字段無法修改,即無法使用乙個新的_id值來代替
由於更新導致文件尺寸超出預期分配的情形,會自動調整填充因子,重新分配空間
保留文件欄位的順序,但是更新或重新命名可能導致字段順序重新排序(_id總是文件第乙個字段)
update的幾個常用修改器:
//$set修改器最常用,等同於rdbmsupdate的set子句
b.使用$set修改器修改年齡字段
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
> db.chenji.find(,]})
c. 文件新增字段($set實現)
> db.chenji.update(,})
writeresult()
> db.chenji.find(,]})
,)d.文件刪除字段
欄位的刪除方法為}
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
> db.chenji.find(,)
刪除年齡字段:
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
刪除年紀字段:
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
>
新增字段:age和年齡
> db.chenji.update(,})
writeresult()
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
e.字段值的增加或減少
當使用$inc修改器時,當字段不存在時,會自動建立該欄位,如果存在,則在原有值的基礎上進行增加或者減少
//$inc主要是用於專門進行數字的增加或減少,因此$inc只能用於整型,長整形,或者雙精度浮點型的值
//$inc不支援字串,陣列以及其他非數字的值
//注,對於$inc的操作,$set也可以完成。$inc存在的理由是$inc更高效
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
再次update這個num欄位會和第一次的100增加101
> db.chenji.update(,})
writeresult()
> db.chenji.find(]})
基於$inc
的負值:
> db.chenji.update(,})
writeresult()
> db.chenji.find(]}).pretty()
> db.chenji.update(,})
writeresult()
> db.chenji.find(]}).pretty()
,})writeresult("}})
f. 時間戳字段的增加及自動更新($currentdate)
> db.chenji.update(,,$currentdate:})
writeresult()
> db.chenji.find(]}).pretty()
f.文件字段重新命名($rename)
> db.chenji.update(,})
writeresult()
> db.chenji.find(]}).pretty()
> db.chenji.find(]}).pretty()
> db.chenji.find(,)
對整個集合上所有文件字段進行重新命名:
>db.chenji.update({},},)
writeresult()/
此次修改為
11條,因為前面以及修改過1條
> db.chenji.find();
>
g.upsert選項用法
/ upsert相當於oracle的merge into或者mysql中的replaceinto
// upsert即是當集合中匹配到滿足條件的文件時,則更新文件,否則則是新增文件。前提是該選項的值為true,預設為flase。
> //下面的演示的是匹配到文件時的例子
小結:a、對於文件上資料的修改有多種方式(修改器),常用的為$set修改器以及$inc
b、$inc是一種高效的資料修改器,通常用於實現數值的增加或減少,僅支援資料型別。
c、對於文件欄位的增加,可以使用$set,$unset,$inc,$currentdate等方式
d、對於文件欄位的刪除,使用$unset方式來實現
e、upsert選項可以實現匹配的文件則更新,不匹配時則插入
MongoDB 文件字段增刪改
mongodb 基於crud create,read,update,delete 方式實現了對集合上的文件進行增刪改查。對於集合上字段的增刪改,可以使用se t或者unset修改器來實現。也可以使用文件替換的方式來實現。本文主要描述集合上字段的增刪改,以及基於選項upsert的更新。關於mongod...
MongoDB文件的增刪改操作
這一次,就通過mongodb shell介紹一下對文件的增刪改操作。通過 show dbs 可以看到所有的資料庫。然後我們通過 use blog 切換到blog資料庫來開始下面的演示。使用 db 命令顯示當前正在使用的資料庫。1 c mongodb bin mongo.exe 2 mongodb s...
mongodb增刪改查
1 mongodb插入資料 db.表名.insert 2 新增乙個欄位.table 代表表名 新增字段 content,字串型別。db.table.update 3 給指定範圍內的記錄新增字段 lt表示小於,lte表示小於等於,gt表大於,gte表示大於等於,timestamp是我表中的乙個時間戳字...