
在先前我們有安裝了 mongosh,在 bin 資料夾裡面有一個 mongosh.exe,點開來就可以下指令,指令方便查詢、新增、刪除、修改 Database 資料,此篇將列出常見的 MongoDB 指令。
資料庫顯示
顯示各個資料庫
切換資料庫
切換到要操作的資料庫,如沒有此資料庫,會自動新增
use 資料庫名稱
顯示所有集合
新增資料
insertOne()
新增一筆資料
1
| db.rooms.insertOne({ "rating": 4.5, "name": "標準雙人房", "price":2500})
|
insertMany()
新增多筆資料
1 2 3 4
| db.rooms.insertMany([ { "rating": 4.5, "name": "標準三人房", "price":3500}, { "rating": 5, "name": "豪華雙人房", "price":5500}, ])
|
更新資料
updateOne()
更新一筆資料
符合此 id 的會進行修改,可針對欄位進行修改
1 2 3 4 5 6 7 8 9 10 11
| db.rooms.updateOne( { "_id": ObjectId("63ff6df3ee1d24244d41577b") }, { "$set": { "name": "標準雙人房 升級版", "rating": 4.8 } } )
|
updateMany()
更新多筆資料
針對 rating 為 4.8 的資料,針對欄位 rating 修改為 0
1 2 3 4 5 6 7 8 9 10
| db.rooms.updateMany( { "rating": 4.8 }, { "$set": { "rating": 0 } } )
|
替換資料
replaceOne()
replaceOne 只能替換整個文件
1 2 3 4 5 6 7 8
| db.rooms.replaceOne( { "rating": 0 }, { "name": "總統套房" } )
|
replaceMany()
1 2 3 4 5 6 7 8
| db.rooms.replaceMany( { "rating": 0 }, { "name": "總統套房" } )
|
刪除資料
deleteOne()
刪除一筆資料
1 2 3 4 5
| db.rooms.deleteOne( { "_id": ObjectId("63ff6df3ee1d24244d41577b") } )
|
deleteMany()
刪除多筆資料
1 2 3 4 5
| db.rooms.deleteMany( { "rating": 4.5 } )
|
deleteMany()
刪除全部資料
尋找資料
findOne()
找到第一筆符合的資料
1 2 3 4 5
| db.rooms.findOne( { "rating": 5 } )
|
find()
找全部符合的資料
.pretty() 會將資料排版
1 2 3 4 5 6 7
| db.rooms.find( { "rating": 5 } )
db.rooms.find().pretty()
|
搜尋數值區間
- $eq:等於
- $ne:不等於
- $gt:大於
- $lt:小於
- $gte:大於等於
- $lte:小於等於
- $in:存在某個值
- $nin:不存在某個值
1 2 3 4 5 6 7
| db.rooms.find( { rating:{ $lte: 4 } } )
|
搜尋複合條件
1 2 3 4 5 6 7 8 9 10
| db.rooms.find( { rating: { $gte: 4 }, price: { $gte: 2000 } } )
|
關鍵字搜尋
利用正規表達式搜尋關鍵字
1 2 3 4 5
| db.rooms.find( { name: /豪華/, } )
|
project
保護欄位,不顯示出的欄位
0 不顯示,1 顯示
1 2 3 4 5 6 7 8
| db.rooms.find( { name: /豪華/, }, { _id: 0 } )
|
尋找陣列裡的值
顯示 payment 包含信用卡的資料
1 2 3 4 5
| db.rooms.find( { "payment":{$in:["信用卡"]} } )
|
count()
查看數量
其他常用
sort()
設定資料排序
查詢 name 為 Lala 的 document 列表,排序為由新到舊
1
| db.posts.find({ "name": "Lala" }).sort({ "createdAt": -1 })
|
limit()
設定顯示幾筆數量
查詢 name 為 Lala 的 document 列表,顯示前 30 筆資料
1
| db.posts.find({ "name": "Lala" }).limit(30)
|
skip()
跳過資料
查詢 comments 超過 100 的 document 列表,跳過前 30 筆資料,再顯示 30 筆資料
1
| db.posts.find({ "comments": { "$gt": 100 } }).skip(30).limit(30)
|
$or
或者
尋找普通熱門貼文,請查詢 likes 或 (or) comments,1,000(含) 以上 的 document 列表
1 2 3 4 5 6 7 8
| db.posts.find( { "$or": [ { "likes": { "$gte": 1000 } }, { "comments": { "$gte": 1000 } } ] } )
|
push
新增陣列項目
隨意找一筆 document 資料,將 tags 欄位裡的陣列,新增一個新 tags 為 遊記
1 2 3 4
| db.posts.updateOne( { "_id": ObjectId("64265e27811aaae6d7a2da71") }, { "$push": { "tags": "遊記" } } )
|
pull
移除陣列項目
將所有 tags 陣列裡的 感情 都移除
1 2 3 4
| db.posts.updateMany( { "tags": "感情" }, { "$pull": { "tags": "感情" } } )
|
本站相關文章
👉 MongoDB 安裝與介紹,什麼是 MongoDB
👉 MongoDB常用工具-Compass GUI 資料庫,Atlas 雲端資料庫
👉 用 Node.js 執行 JavaScript 環境,Node.js 後端開發第一步
👉 三分鐘了解 Node.js 模組原理:import 與 export 的運作
👉 Node.js HTTP 模組 | 建立強大的伺服器端應用程式
🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程
想學習更多關於前後端的線上課程,可以參考看看。
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住
如果你是初學者,非常推薦六角學院哦!
剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!
也是很多工程師推薦的線上課程網站。