MongoDB數據庫增刪改查基本使用(mongodb實現增刪改查)

      網友投稿 995 2022-05-30

      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

      MongoDB數據庫增刪改查基本使用(mongodb實現增刪改查)

      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小時內刪除侵權內容。

      上一篇:Nginx 常用配置匯總,從入門到干活足矣(nginx/1.16.1)
      下一篇:第十一屆藍橋杯省賽JavaC組真題——詳細答案對照(完整版)
      相關文章
      国产亚洲福利一区二区免费看| www国产亚洲精品久久久| 校园亚洲春色另类小说合集| 亚洲精品美女视频| 亚洲国产女人aaa毛片在线| 亚洲日韩精品一区二区三区| 成人亚洲性情网站WWW在线观看| www国产亚洲精品久久久| 国产精品亚洲专区无码不卡| 亚洲人AV在线无码影院观看| 亚洲国产精品成人综合色在线| 亚洲高清中文字幕免费| 亚洲人成免费电影| 亚洲伊人久久精品| 亚洲综合色7777情网站777| 国产精品亚洲精品观看不卡| 亚洲六月丁香婷婷综合| 亚洲精品123区在线观看| 亚洲午夜理论片在线观看| 亚洲国产区男人本色| 综合偷自拍亚洲乱中文字幕| 亚洲国产V高清在线观看| 亚洲 小说区 图片区 都市| 亚洲人妻av伦理| 曰韩亚洲av人人夜夜澡人人爽| 国产亚洲老熟女视频| 久久久久亚洲精品男人的天堂 | 亚洲av午夜成人片精品电影| xvideos亚洲永久网址| 国产偷国产偷亚洲高清日韩 | 亚洲免费在线视频观看| 亚洲一区在线视频| 亚洲人成小说网站色| 亚洲人成小说网站色| 激情小说亚洲图片| 久久国产成人亚洲精品影院| 亚洲中文字幕无码一区| 亚洲国产精彩中文乱码AV| 亚洲视频免费一区| 中文字幕亚洲情99在线| 亚洲av无码有乱码在线观看|