MongoDB】 1.入門 《MongoDB權威指南》【七天讀書】

      網友投稿 752 2025-03-31

      目錄


      一、前言

      二、第一部分 入門

      1. 簡介

      2.基本概念

      3.數據類型

      4.插入數據

      5.刪除數據

      6.更新文檔

      7.查詢文檔

      三、總結

      一、前言

      本書從淺入深地介紹了MongoDB,是初學者非常全面的學習指南。

      二、第一部分 入門

      1. 簡介

      MongoDB是面向文檔的數據庫,他的優勢在于

      易于使用

      易于擴展

      功能豐富

      索引

      聚合

      特殊的集合和索引類型

      文件存儲

      性能卓越

      2.基本概念

      以下是一些基本概念,通過這些概念可以對MongoDB有初步認識。

      文檔相當于關系型數據庫的行

      集合相當于關系型數據庫的表

      一個MongoDB可以擁有多個獨立的數據庫

      每個文檔都有唯一的鍵 _id

      mongo shell 對MongoDB的實例管理和查詢提供了內置操作

      3.數據類型

      MongoDB的文檔被認為是類似JSON存儲,以下是常見的數據類型

      null

      布爾類型 true false

      數值類型 默認是64位的浮點型,還可以是NumberIne(“3”) 或者 NumberLong(“3”)

      字符串類型

      日期類型 new Date()

      正則表達式

      數組

      內嵌文檔

      Object ID

      二進制數據

      代碼

      4.插入數據

      MongoDB支持單行插入insertOne,和多行插入insertMany。

      > db.t1.insertOne({"name":"xiaoyuqingnian"}) { "acknowledged" : true, "insertedId" : ObjectId("61ed6e4a6e4687eeb69f4487") }

      1

      2

      3

      4

      5

      > db.t1.insertMany([{"name":"xiaoyuqingnian"},{"name":"xiaoyuqingnian2"}]) { "acknowledged" : true, "insertedIds" : [ ObjectId("61ed6ef46e4687eeb69f4488"), ObjectId("61ed6ef46e4687eeb69f4489") ] }

      1

      2

      3

      4

      5

      6

      7

      【MongoDB】 1.入門 《MongoDB權威指南》【七天讀書】

      8

      MongoDB能夠接收的最大消息長度是48MB,如果超過48MB,多數驅動程序會拆分成多個48MB的請求。

      所有文檔的大小不能超過16MB

      5.刪除數據

      deleteOne會刪除符合條件的第一條數據,deleteMany則會刪除符合條件的全部數據。

      > db.t1.deleteOne({ "_id": ObjectId("61ed6e4a6e4687eeb69f4487")}) { "acknowledged" : true, "deletedCount" : 1 }

      1

      2

      > db.t1.insertMany([{"name":"xiaoyuqingnian","type":"a"},{"name":"xiaoyuqingnian2","type":"a"}]) { "acknowledged" : true, "insertedIds" : [ ObjectId("61ed730c6e4687eeb69f448a"), ObjectId("61ed730c6e4687eeb69f448b") ] } > db.t1.find() { "_id" : ObjectId("61ed6ef46e4687eeb69f4488"), "name" : "xiaoyuqingnian" } { "_id" : ObjectId("61ed6ef46e4687eeb69f4489"), "name" : "xiaoyuqingnian2" } { "_id" : ObjectId("61ed730c6e4687eeb69f448a"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61ed730c6e4687eeb69f448b"), "name" : "xiaoyuqingnian2", "type" : "a" } > db.t1.deleteMany({ "type":"a"}) { "acknowledged" : true, "deletedCount" : 2 } > db.t1.find() { "_id" : ObjectId("61ed6ef46e4687eeb69f4488"), "name" : "xiaoyuqingnian" } { "_id" : ObjectId("61ed6ef46e4687eeb69f4489"), "name" : "xiaoyuqingnian2" }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      如果不帶條件則會刪除整個集合。

      > db.t1.deleteMany({}) { "acknowledged" : true, "deletedCount" : 2 }

      1

      2

      推薦刪除集合的方式是drop()。

      6.更新文檔

      更新文檔有三種

      updateOne

      updateMany

      replaceOne

      replaceOne注意只會匹配第一條數據,在有多條符合條件的記錄時需要注意

      > db.t1.replaceOne({"name":"xiaoyuqingnian"},{"name":"xiaoyuxiaoyu"}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.t1.find() { "_id" : ObjectId("61edf1586e4687eeb69f448c"), "name" : "xiaoyuxiaoyu" } { "_id" : ObjectId("61edf1586e4687eeb69f448d"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15a6e4687eeb69f448e"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15a6e4687eeb69f448f"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15b6e4687eeb69f4490"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15b6e4687eeb69f4491"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15c6e4687eeb69f4492"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15c6e4687eeb69f4493"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4494"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4495"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4496"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4497"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15e6e4687eeb69f4498"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15e6e4687eeb69f4499"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf1636e4687eeb69f449a"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf1636e4687eeb69f449b"), "name" : "xiaoyuqingnian2", "type" : "c" } { "_id" : ObjectId("61edf1666e4687eeb69f449c"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf1666e4687eeb69f449d"), "name" : "xiaoyuqingnian2", "type" : "d" } > db.t1.replaceOne({"name":"xiaoyuqingnian"},{"name":"xiaoyuxiaoyu"}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.t1.find() { "_id" : ObjectId("61edf1586e4687eeb69f448c"), "name" : "xiaoyuxiaoyu" } { "_id" : ObjectId("61edf1586e4687eeb69f448d"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15a6e4687eeb69f448e"), "name" : "xiaoyuxiaoyu" } { "_id" : ObjectId("61edf15a6e4687eeb69f448f"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15b6e4687eeb69f4490"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15b6e4687eeb69f4491"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15c6e4687eeb69f4492"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15c6e4687eeb69f4493"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4494"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4495"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4496"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15d6e4687eeb69f4497"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf15e6e4687eeb69f4498"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf15e6e4687eeb69f4499"), "name" : "xiaoyuqingnian2", "type" : "a" } { "_id" : ObjectId("61edf1636e4687eeb69f449a"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf1636e4687eeb69f449b"), "name" : "xiaoyuqingnian2", "type" : "c" } { "_id" : ObjectId("61edf1666e4687eeb69f449c"), "name" : "xiaoyuqingnian", "type" : "a" } { "_id" : ObjectId("61edf1666e4687eeb69f449d"), "name" : "xiaoyuqingnian2", "type" : "d" }

      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

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      更新運算符用來對文檔進行部分更新,比如數據增減、數組元素的增刪。

      > db.t1.insertOne({"name":"xiaoyu","blogCount":"1"}) { "acknowledged" : true, "insertedId" : ObjectId("61eeb3226e4687eeb69f449e") } > db.t1.insertOne({"name":"xiaoyuqingnian","blogCount":1}) { "acknowledged" : true, "insertedId" : ObjectId("61eeb3f26e4687eeb69f449f") } > db.t1.updateOne({"_id":ObjectId("61eeb3f26e4687eeb69f449f")},{$inc:{"blogCount":1}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } { "_id" : ObjectId("61eeb3f26e4687eeb69f449f"), "name" : "xiaoyuqingnian", "blogCount" : 2 }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      涉及到的用法有

      $inc 增加數字

      $set 設置

      $push將元素添加到數組末尾

      $ne $addToSet 不存在時才添加,避免重復添加

      $pop從數組頭部或者尾部刪除元素

      $pull刪除符合條件匹配元素

      upsert如果匹配不到就新增文檔

      返回被更新的文檔,有三種集合方法,分別完成了刪除、替換、更新等方法

      findOneAndDelete

      findOneAndReplace

      findOneAndUpdate

      7.查詢文檔

      注意的是,查詢的值必須是常量、

      find()不帶條件就是查詢全部結果,帶條件就是查詢匹配的結果,我們可以通過下面的比較運算符做條件比較

      $lt 小于 <

      $lte 小于等于 <=

      $gt 大于 >

      $gte 大于等于 >=

      $ne 不等于 !=

      > db.t1.find({ "blogCount" : { "$lt": 10 }}) { "_id" : ObjectId("61eeb3f26e4687eeb69f449f"), "name" : "xiaoyuqingnian", "blogCount" : 2 }

      1

      2

      OR查詢支持兩種,$in支持查詢多個鍵值,$or可以查詢多個匹配值。

      $not可以和任何條件結合,表示不匹配。

      $regex可以匹配正則表達式。

      數組查詢

      $all查詢全部元素

      $size查詢特定數組長度

      $slice返回特定長度的子集

      分頁和sql類似,使用limit、skip、sort進行限定結果。

      > db.t1.find().skip(1).limit(2).sort({"name":1}) { "_id" : ObjectId("61eec9cf6e4687eeb69f44a0"), "name" : "xiaoyu2", "blogCount" : "10" } { "_id" : ObjectId("61eec9d86e4687eeb69f44a1"), "name" : "xiaoyu3", "blogCount" : "15" }

      1

      2

      3

      三、總結

      本書的第一部分從基礎入手,介紹了Mongo的特點、數據類型、增刪改查的語法。

      值得留意的是,本文的語言十分詼諧,在描述插入文檔時,提到了所有文檔大小必須小于16MB,而《戰爭與和平》整部著作也只有3.14MB。

      這部分留下的坑,后續單獨補上

      數組的插入完整案例

      數組的查詢完整案例

      游標的使用和理解

      MongoDB 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:數據一目了然,探索可視化BI報表的力量
      下一篇:WPS表格辦公—將兩張圖片合成為一張(wps把兩張圖片合成一張)
      相關文章
      亚洲伊人成无码综合网 | 2020年亚洲天天爽天天噜| 亚洲精品动漫免费二区| 久久精品国产亚洲AV网站| 国产午夜亚洲精品理论片不卡 | 日本亚洲色大成网站www久久 | 国产国拍亚洲精品福利| 国产亚洲蜜芽精品久久| 亚洲精品NV久久久久久久久久| 亚洲阿v天堂在线2017免费| 亚洲国产精品国产自在在线| 亚洲国产成人精品无码久久久久久综合 | 久久久无码精品亚洲日韩软件| 久久精品国产精品亚洲艾草网美妙| 亚洲一区二区精品视频| 亚洲精品国产日韩无码AV永久免费网| 精品亚洲国产成人av| 久久水蜜桃亚洲AV无码精品 | 亚洲av无码成人精品区一本二本 | 亚洲成AV人在线观看网址| 亚洲成人高清在线| 久久久久亚洲AV无码专区网站| 亚洲啪啪AV无码片| 亚洲高清在线播放| 亚洲国产精品成人久久久| 亚洲av无码一区二区三区天堂古代| 亚洲国产一区在线观看| 亚洲综合色丁香婷婷六月图片| 亚洲av成人中文无码专区| 亚洲人成网站观看在线播放| 亚洲自偷自偷图片| 亚洲爆乳无码一区二区三区| 亚洲一区二区三区日本久久九| 亚洲日韩乱码中文无码蜜桃臀| 国产亚洲玖玖玖在线观看| 亚洲AV无码精品国产成人| 久久久久国产成人精品亚洲午夜| 亚洲国产另类久久久精品小说| 中文字幕亚洲综合久久| 亚洲人成人网毛片在线播放| 色综合久久精品亚洲国产|