MongoDB 文件字段增刪改

2021-09-21 02:42:11 字數 2836 閱讀 2899

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