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