MongoDB數據庫增刪改查基本使用(mongodb實現增刪改查)
MongoDB數據庫增刪改查基本使用
文章目錄
MongoDB數據庫增刪改查基本使用
1.CRUD介紹
2.MongoDB數據庫常用命令
3.MongoDB數據庫顯示命令
3.1.查詢當前有多少個數據庫
3.2.顯示當前所在的數據庫
3.3.切換數據庫
3.4.顯示幫助信息
3.5.打印當前數據庫用戶列表
3.5.顯示當前所在的數據庫表信息
3.6.刪除一個表(集合)
3.8.命令行執行mongo命令
4.插入數據
4.1.插入一條數據
4.2.批量插入多條數據
4.3.插入嵌套數據
5.查詢數據
5.1.查詢book_date表中status包含N的數據
5.2.查詢nest_date表中size嵌套uom是cm并且qty小于50的數據
5.3.查詢nest_date表中size嵌套uom是cm并且qty等于75的數據
5.4.查詢book_date表status等于T或者price小于50的數據
5.5.正則查詢表中數據
5.6.查詢表中第一條數據
6.更新數據
6.1.更新一條數據
6.2.匹配多個條件更新
6.3.更新多條數據
6.4.使用update更新一條數據
7.刪除數據
7.1.刪除一條數據
7.2.刪除多條數據
1.CRUD介紹
CRUD操作是create(創建)、read(讀?。pdate(更新)和delete(刪除)
MongoDB不支持常規的SQL的命令,但是自身有豐富的查詢語言
MongoDB在插入一條數據后,會自動增加一個_id自動,作為主鍵,如果插入的文檔省略了id字段,則會自動生產一個Object_id字段
MongoDB默認有4個數據庫:
test:登陸時默認存在的庫,不切換其他庫時默認存在的庫
admin:系統預留庫,MongoDB系統管理庫
local:本地預留庫,存儲關鍵日志
config:MongoDB配置信息庫
mongo默認登陸的時候是在test庫下
mongo不需要提前創建庫和表,直接use切換就是創建庫,直接插入數據就會創建表
使用use切換到的庫,如果沒有任何數據,實際上并不會真正創建,是個虛的庫,所以show dbs并不會顯現,只有在插入數據后,數據庫才會真正創建
mongodb插入數字時,不需要使用雙引號
2.MongoDB數據庫常用命令
3.MongoDB數據庫顯示命令
3.1.查詢當前有多少個數據庫
> show databases admin 0.000GB config 0.000GB local 0.000GB > show dbs admin 0.000GB config 0.000GB local 0.000GB
1
2
3
4
5
6
7
8
9
3.2.顯示當前所在的數據庫
> db test
1
2
3.3.切換數據庫
> use config switched to db config > db config
1
2
3
4
5
3.4.顯示幫助信息
1.顯示當前庫下可以執行的命令 > help 2.顯示數據庫操作命令 > db.help()
1
2
3
4
5
3.5.打印當前數據庫用戶列表
> show users
1
3.5.顯示當前所在的數據庫表信息
> show tables
1
3.6.刪除一個表(集合)
> db.biao.drop() true
1
2
3.8.命令行執行mongo命令
mongo --port 28017 --eval "show dbs" echo "show dbs"|mongo --port 28017
1
2
4.插入數據
4.1.插入一條數據
mongodb數據庫創建一個表,直接使用use命令進行就創建了,如果里面建了表,在show dbs的時候才能看到,否則沒有數據的情況下是看不到的
插入數據時不需要先創建表,在插入數據時會自動將表創建出來
語法格式: db.表名.insert({“字段1”:“值1”,“字段2”:“值2”})
1.進入我們要創建數據的庫 > use db_data switched to db db_data 2.在user_info表中插入數據 > db.user_info.insert({"name":"jiangxl","ad":"北京市","job":"linux"}) WriteResult({ "nInserted" : 1 }) > db.user_info.insert({"name":"xiaoming","ad":"石家莊市","job":"net"}) WriteResult({ "nInserted" : 1 }) > db.user_info.insert({"name":"xiaolan","ad":"太原市","job":"java"}) WriteResult({ "nInserted" : 1 }) > db.user_info.insert({"name":"xiaozi","ad":"石家莊市","job":"guanggao"}) WriteResult({ "nInserted" : 1 }) 3.查看表是否創建成功 > show tables user_info 4.查看表中的數據 > db.user_info.find()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
表中的數據在插入時會自動生成一個_id字段作為主鍵,數據格式也是json格式
在user_info表中插入不同字段的數據
> db.user_info.insert({"name":"xiaoqiang","ad":"北京市朝陽區","job":"linux","sex":"boy","xinzi":"10k"}) WriteResult({ "nInserted" : 1 }) > db.user_info.insert({"name":"xiaowu","ad":"北京市東城區","job":"linux","sex":"boy","xinzi":"6k"}) WriteResult({ "nInserted" : 1 })
1
2
3
4
可以看到,不同的字段只要表名相同都可以插在一個表中,而mysql只能更新表結構才能達到這種效果
應用如果更新涉及到了新增某個表的字段,mongod只需要在下次插入數據時,指定上新字段即可生效
4.2.批量插入多條數據
語法格式:db.表名.insertMany([{“字段1”:“值1”,“字段2”:“值2”},{“字段1”:“值1”,“字段2”:“值2”}])
使用insertMany插入的數據,會自動生產ObjectId
> db.book_date.insertMany([ { "name":"nginx", "price":25, "num":100, "status":"N" }, { "name":"ansible", "price":50, "num":200 , "status":"A" }, { "name":"tomcat", "price":100, "num":150, "status":"T" }, { "name":"redis", "price":75, "num":320 , "status":"R" }, { "name":"docker", "price":45, "num":270, "status":"D" } ]); { "acknowledged" : true, "insertedIds" : [ ObjectId("602791d60ae90b3ed52d0247"), ObjectId("602791d60ae90b3ed52d0248"), ObjectId("602791d60ae90b3ed52d0249"), ObjectId("602791d60ae90b3ed52d024a"), ObjectId("602791d60ae90b3ed52d024b") ] } > > show tables; book_date user_info > > db.book_date.find()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
4.3.插入嵌套數據
> db.nest_date.insertMany( [ ... { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }, ... { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" }, ... { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" }, ... { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" }, ... { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" } ... ]); { "acknowledged" : true, "insertedIds" : [ ObjectId("60279b0d0ae90b3ed52d0251"), ObjectId("60279b0d0ae90b3ed52d0252"), ObjectId("60279b0d0ae90b3ed52d0253"), ObjectId("60279b0d0ae90b3ed52d0254"), ObjectId("60279b0d0ae90b3ed52d0255") ] } > show tables; book_date nest_date user_info > db.nest_date.find() { "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" } { "_id" : ObjectId("60279b0d0ae90b3ed52d0252"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" } { "_id" : ObjectId("60279b0d0ae90b3ed52d0253"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" } { "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" } { "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
5.查詢數據
4中插入了一些數據,可以簡單的練習查詢
可以使用Navicat連接mongodb進行數據查詢
find查詢默認是and
語法格式:db.表名.find({“條件1”:“值1”,“條件2,”:“值2”})
db.表名.find({“條件1”:“值1”,“條件2,”:"{$lt:“值2”}})
或者查詢
db.表名.find({undefinedKaTeX parse error: Expected '}', got 'EOF' at end of input: …"值1"},{"條件2": {lt: 值2}}]})
5.1.查詢book_date表中status包含N的數據
> db.book_date.find({"status":"N"}) { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
1
2
navicat查詢
5.2.查詢nest_date表中size嵌套uom是cm并且qty小于50的數據
nest_date表中的size字段的數據時嵌套數據,因此在查詢字段中嵌套的數據時需要使用"size.uom":“cm”
> db.nest_date.find({"size.uom":"cm","qty":{$lt:50}}) { "_id" : ObjectId("60279b0d0ae90b3ed52d0251"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" } { "_id" : ObjectId("60279b0d0ae90b3ed52d0255"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" } 也可以使用Navicat拆一下顯得好看 db.nest_date.find({ "size.uom": "cm", //size等于cm "qty": { $lt: 50 //qty小于50 } })
1
2
3
4
5
6
7
8
9
10
11
navicat查詢
5.3.查詢nest_date表中size嵌套uom是cm并且qty等于75的數據
> db.nest_date.find({ ... "size.uom": "cm", ... "qty": { ... $eq: 75 ... } ... }) { "_id" : ObjectId("60279b0d0ae90b3ed52d0254"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" } 解釋: db.nest_date.find({ "size.uom": "cm", //uom為cm的 "qty": { $eq: 75 //qty等于75的 } })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
navicat查詢
5.4.查詢book_date表status等于T或者price小于50的數據
> db.book_date.find({$or: [{"status": "T"},{"price": {$lt: 50}}]}) { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" } { "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" } { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" } 解釋: db.book_date.find({ $or: [ //或者 { "status": "T" //staus等于T的 }, { "price": { $lt: 50 //price小于50的 } } ] })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
navicat查詢
5.5.正則查詢表中數據
查詢book_date表中status為D并且price小于50和name以do開頭兩者滿足其一的數據
> db.book_date.find({"status":"D",$or: [{"price":{$lt:30}},{"name": /^do/}]}) { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" } 解釋: db.book_date.find({ "status": "D", //status為D的 $or: [{ "price": { //price小于30的 $lt: 30 } }, { "name": /^do/ //name以do開頭的 }] })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
navicat查詢
5.6.查詢表中第一條數據
> db.book_date.findOne() { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" }
1
2
3
4
5
6
7
8
6.更新數據
mongodb更新一條數據后,會在最后增加一個新的字段,記錄更新的時間
語法格式:
更新一條數據:db.表名.updateOne({“匹配條件1”:"值"1},{undefined s e t : " 更 新 的 字 段 1 " : " 新 值 1 " , " 更 新 字 段 2 " : " 新 值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"}, set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})
更新多條數據:db.表名.updateMany({“匹配條件1”:"值"1},{undefined s e t : " 更 新 的 字 段 1 " : " 新 值 1 " , " 更 新 字 段 2 " : " 新 值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"}, set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})
使用update更新:db.表名.update({“匹配條件1”:"值"1},{undefined s e t : " 更 新 的 字 段 1 " : " 新 值 1 " , " 更 新 字 段 2 " : " 新 值 2 " , set:{"更新的字段1":"新值1","更新字段2":"新值2"}, set:"更新的字段1":"新值1","更新字段2":"新值2",currentDate:{“lastModified”:true}})
更新多條數據:
6.1.更新一條數據
將name等于nginx的數據中的price改為70,num改為230
1.查詢要更新的數據 > db.book_date.find({"name":"nginx"}) { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : 25, "num" : 100, "status" : "N" } 2.更新語句 > db.book_date.updateOne({"name":"nginx"},{$set:{"price":70,"num":230},$currentDate:{"lastModified":true}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } 3.查看數據是否更新 > db.book_date.find() { "_id" : ObjectId("6027de7f0ae90b3ed52d0256"), "name" : "nginx", "price" : 70, "num" : 230, "status" : "N", "lastModified" : ISODate("2021-02-13T14:14:01.526Z") } { "_id" : ObjectId("6027de7f0ae90b3ed52d0257"), "name" : "ansible", "price" : 50, "num" : 200, "status" : "A" } { "_id" : ObjectId("6027de7f0ae90b3ed52d0258"), "name" : "tomcat", "price" : 100, "num" : 150, "status" : "T" } { "_id" : ObjectId("6027de7f0ae90b3ed52d0259"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" } { "_id" : ObjectId("6027de7f0ae90b3ed52d025a"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
更新語句解釋
db.book_date.updateOne({ "name": "nginx" //要匹配的數據,當數據中name是nginx的數據 }, { $set: { //要修改的內容 "price": 70, //price修改為70 "num": 230 //num修改為230 }, $currentDate: { "lastModified": true //增加一個字段,每次更新都記錄時間 } })
1
2
3
4
5
6
7
8
9
10
11
6.2.匹配多個條件更新
將name等于nginx并且status等于N的數據進行更新,將price修改為70,num修改為230,status修改為Nginx
db.book_date.updateOne({ "name": "nginx", //條件1 "status":"N" //條件2 }, { $set: { //更新的內容 "price": 70, "num": 230, "status":"Nginx" }, $currentDate: { "lastModified": true } })
1
2
3
4
5
6
7
8
9
10
11
12
13
更新成功
6.3.更新多條數據
num小于250的數據,將price修改為99,num修改為530
> db.book_date.updateMany({"num":{$lt:250}},{$set:{"price":"99","num":"530"},$currentDate:{"lastModified":true}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.book_date.find() { "_id" : ObjectId("602792a80ae90b3ed52d024c"), "name" : "nginx", "price" : "70", "num" : "230", "status" : "Nginx", "lastModified" : ISODate("2021-02-13T11:19:38.473Z") } { "_id" : ObjectId("602792a80ae90b3ed52d024d"), "name" : "ansible", "price" : "99", "num" : "530", "status" : "A", "lastModified" : ISODate("2021-02-13T11:24:46.045Z") } { "_id" : ObjectId("602792a80ae90b3ed52d024e"), "name" : "tomcat", "price" : "99", "num" : "530", "status" : "T", "lastModified" : ISODate("2021-02-13T11:23:59.063Z") } { "_id" : ObjectId("602792a80ae90b3ed52d024f"), "name" : "redis", "price" : 75, "num" : 320, "status" : "R" } { "_id" : ObjectId("602792a80ae90b3ed52d0250"), "name" : "docker", "price" : 45, "num" : 270, "status" : "D" } 解釋: db.book_date.updateMany({ "num": { $lt: 300 //num小于300的全部數據 } }, { $set: { "price": "99", //price更新為99 "num": "530" //num更新為530 }, $currentDate: { "lastModified": true } })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
更新成功
6.4.使用update更新一條數據
db.book_date.update({ "name": "nginx" }, { $set: { "price": "70", "num": "230", "status":"nginx" }, $currentDate: { "lastModified": true } })
1
2
3
4
5
6
7
8
9
10
11
12
7.刪除數據
語法格式:
刪除一個:db.表名.deleteOne({“條件1”:“值1”})
刪除多個:db.表名.deleteMany({“條件1”:“值1”})
7.1.刪除一條數據
> db.book_date.deleteOne({"name":"nginx"}) { "acknowledged" : true, "deletedCount" : 1 }
1
2
7.2.刪除多條數據
> db.book_date.deleteMany({"num":{$lt:500}}) { "acknowledged" : true, "deletedCount" : 2 }
1
2
MongoDB 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。