MongoDB 文件字段增刪改

2021-09-22 20:25:16 字數 3910 閱讀 2488

mongodb 基於crud(create,read,update,delete)方式實現了對集合上的文件進行增刪改查。對於集合上字段的增刪改,可以使用se

t或者unset修改器來實現。也可以使用文件替換的方式來實現。本文主要描述集合上字段的增刪改,以及基於選項upsert的更新。

關於mongodb文件更新可以參考:mongodb 文件更新

db.collection.update(

, //查詢或過濾條件

, //修改器(被修改鍵及內容)

//後面的3.2之後的語法引數基本相同

)其他的如updateone,updatemany等用法請參考:mongodb 文件更新

mongodb集合上所有的寫操作特性

原子性操作(單個文件級別原子性操作)

_id 字段無法修改,即無法使用乙個新的_id值來代替

由於更新導致文件尺寸超出預期分配的情形,會自動調整填充因子,重新分配空間

保留文件欄位的順序,但是更新或重新命名可能導致字段順序重新排序(_id總是文件第乙個字段)

//$set修改器最常用,等同於rdbms update的set子句

//演示重用的的示例集合資料請參考:mongodb 比較運算子

> db.persons

.find().limit(1).pretty()

, "country" : "usa",

"books" : [

"js",

"c++",

"extjs",

"mongodb"

],"blog" : ""

}>

> //使用$set修改器修改age欄位

> db.persons

.update(,})

writeresult()

> //使用$set修改器修改巢狀文件,使用成員.方式來實現

> db.persons

.update(,})

writeresult()

> //檢視修改後的結果

> db.persons

.find(,).pretty()

}

//如下,將country設定為陣列

> db.persons

.update(,})

writeresult()

> db.persons

.find(,)

//下面使用$set文件新增乙個add欄位,也可以使用$inc實現新增字段(見後面的描述)

> db.persons

.update(,})

writeresult()

> //檢視新增欄位add

> db.persons

.find(,)

//注,欄位的刪除方法為}

> db.persons

.update(,})

writeresult()

//驗證刪除後的結果add未顯示

> db.persons

.find(,)

//當使用$inc修改器時,當字段不存在時,會自動建立該欄位,如果存在,則在原有值的基礎上進行增加或者減少

//$inc主要是用於專門進行數字的增加或減少,因此$inc只能用於整型,長整形,或者雙精度浮點型的值

//$inc不支援字串,陣列以及其他非數字的值

//注,對於$inc的操作,$set也可以完成。$inc存在的理由是$inc更高效

//下面通過$inc新增salary欄位

> db.persons

.update(,})

writeresult()

> db.persons

.find(,).pretty()

//再次執行$inc

> db.persons

.update(,})

writeresult()

//查詢結果為在原有1000的基礎上增加2000,即為3000

> db.persons

.find(,).pretty()

//基於$inc的負值

> db.persons

.update(,})

writeresult()

//負值後的結果

> db.persons

.find(,).pretty()

//下面使用非數字來實現$inc,報錯如下

> db.persons

.update(,})

writeresult("}})

//有時候需要為文件增加最後的更新時間自動,可以使用$currentdate方式來實現

//下面為文件增加lastmodified時間戳字段

> db.persons.update(,,$currentdate: })

writeresult()

//檢視結果

> db.persons.find(,)

//再次更新

> db.persons.update(,,$currentdate: })

writeresult()

//再次檢視結果,時間戳自動被自動更新為最新的時間

> db.persons.find(,)

//下面使用$rename對文件字段重新命名

> db.persons

.update(,})

writeresult()

> db.persons

.find(,)

//對子文件字段進行重新命名

> db.persons

.update(,})

writeresult()

> db.persons

.find(,)

, "ename" : "robinson.cheng" }

//對整個集合上所有文件字段進行重新命名

> db.persons

.count()

12> db.persons

.update({},},)

writeresult() //此次修改為11條,因為前面以及修改過1條

// upsert相當於oracle的merge

into或者mysql中的replace

into

// upsert即是當集合中匹配到滿足條件的文件時,則更新文件,否則則是新增文件。前提是該選項的值為true,預設為flase。

>//下面的演示的是匹配到文件時的例子

> db.persons.update(,},)

writeresult() //此時提示有乙個匹配,有乙個被更新

> db.persons.find(,)

>//下面通過upsert方式來新增文件

> db.persons.find() //查詢thomas

> db.persons.update(,},)

writeresult()

> db.persons.find()

a、對於文件上資料的修改有多種方式(修改器),常用的為$set修改器以及$inc

b、$inc是一種高效的資料修改器,通常用於實現數值的增加或減少,僅支援資料型別。

c、對於文件欄位的增加,可以使用$set,$unset,$inc,$currentdate等方式

d、對於文件欄位的刪除,使用$unset方式來實現

e、upsert選項可以實現匹配的文件則更新,不匹配時則插入

MongoDB 文件字段增刪改

mongodb 基於crud create,read,update,delete 方式實現了對集合上的文件進行增刪改查。對於集合上字段的增刪改,可以使用set或者unset修改器來實現。也可以使用文件替換的方式來實現。本文主要描述集合上字段的增刪改,以及基於選項upsert的更新。a.語法描述 db...

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是我表中的乙個時間戳字...