使用mongodb實(shí)現(xiàn)簡(jiǎn)單的讀寫操作
引言
本文適合初學(xué)者,特別是剛剛安裝了mongodb數(shù)據(jù)庫(kù)的朋友,或在atlas剛拿到免費(fèi)集群的朋友。
拿到數(shù)據(jù)庫(kù),心情很激動(dòng),手癢難耐。特別想向數(shù)據(jù)庫(kù)插入幾條數(shù)據(jù)庫(kù)試試。即使是深夜完成了安裝,也忍不住想去完成這些操作??吹綌?shù)據(jù)庫(kù)里的記錄,心中會(huì)更有成就感。
這是一個(gè)里程碑的時(shí)刻,代表著mongodb學(xué)習(xí)的開始?;蛘咂渌魏我环N數(shù)據(jù)庫(kù)技能學(xué)習(xí)的開始。
本文基于官方文檔,整理出mongodb簡(jiǎn)單的增刪改查操作。
創(chuàng)建操作
創(chuàng)建操作,是向集合中添加一個(gè)新的文檔。mongodb的一條記錄稱為一個(gè)文檔。文檔是類似JSON結(jié)構(gòu)的BSON結(jié)構(gòu)的鍵值對(duì)對(duì)象,支持字符串,數(shù)值,布爾類型,時(shí)間,數(shù)組,對(duì)象等類型。多條文檔構(gòu)成了mongodb的一個(gè)集合。
當(dāng)插入文檔的集合不存在時(shí),mongodb自動(dòng)創(chuàng)建這個(gè)集合。
Mongodb提供了兩種文檔插入方法
db.collection.insertOne() db.collection.insertMany() //舉例 db.users.insertOne({ name:"sue", age: 26, gentle: "Female" }) db.users.insertMany([{ name:"sue", age: 26, gentle: "Female" },{ name:"james", age: 28, gentle: "Male" }])
其中集合名稱是users, 文檔是帶有三個(gè)字段name, age, gentle的對(duì)象。
使用insertOne方法,插入一條文檔,參數(shù)是一個(gè)對(duì)象。而使用insertMany方法,插入多條文檔,參數(shù)是一個(gè)數(shù)組。
Mongodb對(duì)單個(gè)文檔的操作是原子性的,即對(duì)于單個(gè)文檔的操作,只有成功和失敗兩個(gè)結(jié)果。成功, 則數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。失敗,則沒(méi)有數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。不會(huì)出現(xiàn)保存了一半這樣的中間狀態(tài)。insertOne向數(shù)據(jù)庫(kù)中插入一條文檔記錄,是原子操作。insertMany向數(shù)據(jù)庫(kù)插入多條文檔,不是原子操作。
查詢操作
查詢操作,是從數(shù)據(jù)庫(kù)的某個(gè)集合中讀取文檔。
mongodb提供find()方法,實(shí)現(xiàn)從集合中讀取文檔數(shù)據(jù)。
db.collection.find()
在find()方法中,可以帶有參數(shù),作為查詢參數(shù),限定查詢返回值。如對(duì)前面插入的user集合進(jìn)行查詢
//查詢所有數(shù)據(jù) db.users.find() //查詢name為sue的數(shù)據(jù) db.users.find({ name: "sue" }) //限制返回?cái)?shù)量 db.users.find().limit(5)
修改操作
修改操作更新數(shù)據(jù)庫(kù)制定集合中符合查詢條件的文檔數(shù)據(jù)。mongodb提供了幾種方法來(lái)支持?jǐn)?shù)據(jù)的更新
//更新一條數(shù)據(jù) db.collection.updateOne() //更新多條數(shù)據(jù) db.collection.updateMany() //替換一條數(shù)據(jù) db.collection.replaceOne()
用戶在修改操作的第一個(gè)參數(shù)指定查詢過(guò)濾條件,在第二個(gè)參數(shù)中指定修改字段和目標(biāo)值。如修改集合users中name為james的age字段
db.users.updateOne({name: "james"},{$set: {"age": 30}})
其中過(guò)濾條件{name: "james"}用來(lái)篩選集合中符合name是james的文檔。使用$set設(shè)置更新的字段和字段值。
Mongodb對(duì)單個(gè)文檔的修改是原子性的,因此updateOne(), replaceOne()方法,都是原子操作。updateMany()方法操作單條記錄,也是原子性的,操作多條記錄時(shí),是非原子操作。
刪除操作
刪除操作,是刪除集合中的文檔。mongodb提供了兩種方法來(lái)刪除文檔。
//刪除一條文檔 db.collection.deleteOne() //刪除多條文檔 db.collection.deleteMany()
刪除方法的參數(shù)中指定查詢過(guò)濾條件,使用該條件查詢出來(lái)的結(jié)果會(huì)被刪除。如刪除users表中男性數(shù)據(jù)。
db.users.deleteMany({gentle: 'Male'})
刪除users表中name是james的數(shù)據(jù)
db.users.deleteOne({name: 'James'})
Mongodb中對(duì)單個(gè)文檔的操作是原子的。所以deleteOne是原子操作, deleteMany不是原子操作。
一點(diǎn)建議
數(shù)據(jù)庫(kù)操作中,修改操作和刪除操作,都是比較危險(xiǎn)的操作。數(shù)據(jù)一旦修改保存到數(shù)據(jù)庫(kù),很難恢復(fù)到修改前的樣子。對(duì)于單條數(shù)據(jù),恢復(fù)起來(lái)容易。對(duì)于批量數(shù)據(jù)的修改更新,請(qǐng)使用查詢語(yǔ)句反復(fù)確認(rèn)修改刪除范圍后,再執(zhí)行操作。并準(zhǔn)備好數(shù)據(jù)恢復(fù)腳本。
以上就是使用mongodb實(shí)現(xiàn)簡(jiǎn)單的讀寫操作的詳細(xì)內(nèi)容,更多關(guān)于mongodb讀寫操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式示例代碼
這篇文章主要給大家介紹了關(guān)于MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07Mongodb多鍵索引中索引邊界的混合問(wèn)題小結(jié)
Mongodb為提高數(shù)組的查詢效率,針對(duì)數(shù)組構(gòu)建了多鍵索引,而Mongodb在應(yīng)用多鍵數(shù)組查詢時(shí),也通過(guò)構(gòu)建,減少數(shù)組查詢的數(shù)值范圍,來(lái)提高查詢性能,本文結(jié)合Mongodb官方文檔,闡述Mongodb在使用多鍵索引時(shí)的邊界優(yōu)化,感興趣的朋友一起看看吧2024-07-07如何對(duì) MongoDB 進(jìn)行性能優(yōu)化(五個(gè)簡(jiǎn)單步驟)
MongoDB一直是最流行的NoSQL,而根據(jù)DB-Engines Ranking最新的排行,時(shí)下MongoDB已經(jīng)擊敗PostgreSQL躍居數(shù)據(jù)庫(kù)總排行的第四位,僅次于Oracle、MySQL和Microsoft SQL Server。本文給大家介紹MongoDB性能優(yōu)化的簡(jiǎn)單總結(jié)。2015-10-10MongoDB快速入門筆記(七)MongoDB的用戶管理操作
這篇文章主要介紹了MongoDB快速入門筆記(七)MongoDB的用戶管理操作 的相關(guān)資料,需要的朋友可以參考下2016-06-06MongoDB數(shù)據(jù)庫(kù)性能監(jiān)控詳解
MongoDB作為圖片和文檔的存儲(chǔ)數(shù)據(jù)庫(kù),為啥不直接存MySQL里,還要搭個(gè)MongoDB集群,麻不麻煩?這篇文章就帶你介紹MongoDB數(shù)據(jù)庫(kù)性能監(jiān)控,感興趣的同學(xué)可以參考閱讀2023-03-03