<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
db.[檔名].insert({BSON資料})
shell當中不支援批次插入,想完成批次插入操作,可以使用shell的for迴圈,或者其他高階語言當中的批次操作方法
例:使用for迴圈插入10個學生,在學生集合當中
我使用的是2.6的版本,發現已經支援了批次插入操作。
save操作和insert操作的區別在於,save在遇到_id相同的插入資料時候,會覆蓋原來的,而insert會提示錯誤
例子:
用insert的方法去插入一個_id相同的資料
db.[檔名].remove({})
集合的本身和索引不會別刪除
例子:刪除列表中所有資料
例: 刪除_id為10的那條記錄
db.[檔名].update({查詢器},{修改器})
{查詢器}就相當於是條件
{修改器}就是你要直接覆蓋替換的BSON資料
例:更新_id為9,那個學生,把Name變成age
注意:當主鍵衝突的時候會報錯並且停止更新操作
例:我用_id為8的資料,去替換_id為9的記錄,因為_id為8的資料已經存在,不允許有兩個主鍵為_id:8
的記錄,所以會報錯。
db.[檔名].update({查詢器},{修改器},true)
後面第三個引數為true,就代表是當記錄不存在的時候,就插入一條記錄,如果存在就更新
例:更新一個_id為10的資料,沒有就插入,有就更新
db.[檔名].update({查詢器},{修改器},false, true)
※預設情況當查詢器查詢出多條資料的時候預設就修改第一條資料
先修改一下資料如下:
讓_id為9和10的資料,有相同的內容
再插入一個_id=11,age=20的資料
第四個引數不寫的情況下去更新:
如下:只能更新第一個age=20的資料
第四個引數新增並且為true的時候,我們預期是10和11都能被修正
但是當我試圖去更新的時候,報錯了,提示說批次更新只能在有$操作的時候使用
修正插入語句
這裡注意$set後面要有":",而且它和它後面的修改器要被{}包起來,因為我第一次使用mongoDB,所以總寫錯。
$set它用來指定一個鍵值對,如果存在鍵就進行修改不存在則進行新增
{$set:{field:value}}
_id為10的資料,沒有Name屬性,進行了新增,有age鍵,就進行了修改
$inc
1.適用於數位型別
2.能夠對鍵對應的數位型別數值進行加減操作
{$inc:{field:value}}
給age=30的資料增加2歲,由於沒有使用批次更新引數,所以預設修正了第一條
$unset刪除指定的鍵
{$unset:{field:1}}
我在例子裡面先是刪除了age=30的資料的age屬性,但是有一點不明白,unset後面那個field:1是什麼,於是我查了一下,說是後面是什麼都無所謂,unset只看鍵不看value,於是又做了第二個例子
$push
1.如果指定的鍵是陣列增追加新的數值
2.如果指定的鍵不是陣列則中斷當前操作,報錯
3.如果不存在指定的鍵則建立陣列型別的鍵值對
{$push:{field:value}}
$pushAll
用法同上,是批次新增陣列資料的操作
{$pushAll:{field:array}}
1.第一個操作沒有用$pushAll,所以把["C#","JAVA"]當成一個陣列專案處理了
2.第二個操作使用了$pushAll,所以當成了兩項來處理的。
$addToSet
往陣列中新增專案,存在就不新增,不存在就新增(push不管存不存在都新增)
{$addToSet:{field:value}}
1.先用push插入,發現更新完成後有兩個“C#”
2.再用addToSet更新,發現沒有增加專案
$pop
從指定陣列刪除一個值1刪除最後一個數值,-1刪除第一個數值
{$pop:{field:value}}
1.刪除最後一個索引位置的資料,後面的value用"1"
2.刪除第一位置索引的資料,value=-1
$pull
push的逆向操作,刪除鍵是陣列的專案中的指定元素
{$pull:{field:value}}
$pullAll
批次刪除陣列中的指定元素
{$pullAll:{field:array}}
$ 陣列定位器,如果陣列有多個數值我們只想對其中一部分進行操作我們就要用到定位器($)
{$push:{field:value}}
1.範例第一個是在剛剛清空的陣列裡面新增了兩個元素
2.我想在{“SubID”:1,"SubName":"MangoDB"}這個物件裡面再新增"Teacher":"Lucy"
理解:首先從上面的例子中我們知道,addToSet這個修改器,可以判斷是否專案存在,不存在的時候就直接插入。
此時我有一個功能,例如我想往一個存在資料的陣列中批次更新資料,如果存在就不更新。那麼只使用addToSet是不能進行批次的,於是就要結合$each來實現。
例:
1.新建立一個檔案,並使用pushAll修改器新增資料:
2.我想要批次插入"C#","PHP","JavaScript","JAVA",要求不能有重複的
如果這時候我直接用pushAll來進行更新的話,"C#"和"JAVA"就會有重複
在shell當中輸入如下命令:
總結:以上就是MongoDB的Document的插入、刪除以及更新的使用。
到此這篇關於MongoDB操作Document的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45