免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

MongoDB 安裝及文檔的基本操作

:2020年06月02日 本站(微博
分享到:

MongoDB 是一個基于分布式文件存儲的半結構化的非關系型數據庫。在海量數據中,可以較高性能的處理存取操作。它是以 BSON 格式進行數據存儲(類似 JSON 格式,但類型更為豐富),因此對于復雜的數據類型...

前言

MongoDB 是一個基于分布式文件存儲的半結構化的非關系型數據庫。在海量數據中,可以較高性能的處理存取操作。它是以 BSON 格式進行數據存儲(類似 JSON 格式,但類型更為豐富),因此對于復雜的數據類型,可以較輕松的保存和處理。同時,在非關系型數據庫陣容中,相比其他數據庫產品,它擁有更豐富的功能,并且與關系型數據庫類型,所以對于新手使用也能快速上手。

安裝

環境:CentOS 7
版本號:4.2.6 企業版
版本:免安版(TGZ)

安裝包

訪問官網鏈接下載鏈接:https://www.mongodb.com/download-center/enterprise

我這里使用的是企業版,下載選項如圖:

下載后得到壓縮包 mongodb-linux-x86_64-enterprise-rhel70-4.2.6.tgz

將下載的壓縮包上傳至對應目錄,然后進行解壓

  1. >

  2. tar

  3. -

  4. zxvf mongodb

  5. -

  6. linux

  7. -

  8. x86_64

  9. -

  10. enterprise

  11. -

  12. rhel70

  13. -

  14. 4.2

  15. .

  16. 6.tgz

配置文件

當前使用的是免安版,所以 mongoDB 的配置文件需要自己手動創建。如果使用的是安裝版,安裝后配置文件會在 /etc/mongod.conf 中。

創建配置前,先創建 data、log、run 三個目錄,分別對應的數據存儲目錄、日志目錄、進程 ID 保存目錄

  1. >

  2. mkdir

  3. -

  4. p

  5. /

  6. var

  7. /

  8. mongodb

  9. /

  10. data

  11. >

  12. mkdir

  13. -

  14. p

  15. /

  16. var

  17. /

  18. mongodb

  19. /

  20. log

  21. >

  22. mkdir

  23. -

  24. p

  25. /

  26. var

  27. /

  28. mongodb

  29. /

  30. run

創建 mongod.conf 在 /var/mongodb 目錄中,內容如下:

  1. # mongod.conf

  2. # for documentation of all options, see:

  3. #   http://docs.mongodb.org/manual/reference/configuration-options/

  4. # where to write logging data.

  5. systemLog

  6. :

  7. destination

  8. :

  9. file

  10. logAppend

  11. :

  12. true

  13. path

  14. :

  15. /var/

  16. mongodb

  17. /

  18. log

  19. /

  20. mongo

  21. .

  22. log

  23. # 日志文件路徑設置

  24. # Where and how to store data.

  25. storage

  26. :

  27. dbPath

  28. :

  29. /var/

  30. mongodb

  31. /

  32. data

  33. # 數據存儲路徑

  34. journal

  35. :

  36. enabled

  37. :

  38. true

  39. #  engine:

  40. #  wiredTiger:

  41. # how the process runs

  42. processManagement

  43. :

  44. fork

  45. :

  46. true

  47. # fork and run in background

  48. pidFilePath

  49. :

  50. /var/

  51. mongodb

  52. /

  53. run

  54. /

  55. mongod

  56. .

  57. pid

  58. # location of pidfile

  59. timeZoneInfo

  60. :

  61. /usr/

  62. share

  63. /

  64. zoneinfo

  65. # network interfaces

  66. net

  67. :

  68. port

  69. :

  70. 27017

  71. # 端口號

  72. bindIp

  73. :

  74. 127.0

  75. .

  76. 0.1

  77. # 監聽 IP ,即可訪問 IP,默認是本機

  78. security

  79. :

  80. authorization

  81. :

  82. enabled

  83. #operationProfiling:

  84. #replication:

  85. #sharding:

  86. ## Enterprise-Only Options

  87. #auditLog:

  88. #snmp:

配置文件常用基本屬性:

屬性說明systemLog#destination日志輸出位置,file 或 syslog,使用 file 時,必須指定 pathsystemLog#logAppend當實例啟動時日志是否追加寫入到現有日志中

systemLog#path日志存放路徑storage#dbPath數據存儲路徑storage#journal#enabled日志是否永久性,可以用來恢復數據processManagement#fork是否后臺運行服務processManagement#pidFilePathpid 文件的存儲路徑processManagement#timeZoneInfo數據庫使用的時區路徑net#port數據使用的端口net#bindIp監聽客戶端連接的 IP,即可訪問的 IPsecurity#authorization是否啟動權限管控

服務啟停

將解壓后的安裝包 bin 路徑添加到環境變量 /etc/profile 中,在 PATH 上進行追加

  1. PATH=$PATH:/usr/local/software/mongoDB/mongodb-linux-x86_64-enterprise-rhel70-4.2.6/bin

使用 /var/mongodb/mongod.conf 配置文件啟動:

  1. >

  2. mongod

  3. -

  4. f

  5. /

  6. var

  7. /

  8. mongodb

  9. /

  10. mongodb

  11. .

  12. conf

如圖所示,則啟動成功

啟動完成后,驗證是否正常運行

  1. >

  2. mongo

如果正常運行,則進入登錄頁面

創建賬號,并設置角色為 root

  1. >

  2. use admin

  3. >

  4. db

  5. .

  6. createUser

  7. ({

  8. user

  9. :

  10. "xxxx"

  11. ,

  12. pwd

  13. :

  14. "xxxxxx"

  15. ,

  16. roles

  17. :[

  18. "root"

  19. ]})

設置賬號后,重新登錄,此時需要進行賬號權限校驗

  1. >

  2. mongo

  3. -

  4. u accont

  5. -

  6. p password

停止 MongoDB 服務,必須切換到 admin 數據庫

  1. >

  2. use admin

  3. >

  4. db

  5. .

  6. shutdownServer

  7. ()

基本操作

在介紹幾本操作之前,現將常用的 MongoDB 對象與關系型數據庫進行類比,便于更好理解 MongoDB 對象。

MongoDB關系型數據庫Database(數據庫)Database(數據庫)

Collection(集合)Table(表)Document(文檔)Row(行)Field(字段)Column(列)

Database 的操作

數據創建和選擇,都是使用 usedb命令

查看所有數據庫

  1. >

  2. show dbs

刪除數據庫,先選擇再刪除

  1. >

  2. use db

  3. >

  4. db

  5. .

  6. dropDatabase

  7. ()

Collection 的操作

創建集合命令,同時,如果沒有先創建集合,插入數據時會自動創建集合

  1. >

  2. db

  3. .

  4. createCollection

  5. (

  6. collectionName

  7. ,

  8. [

  9. options

  10. ])

其中 options為可選參數,主要是數據的校驗規則,這里不展開分析。

查看數據庫中所有集合

  1. >

  2. show collections

選擇集合

  1. >

  2. db

  3. .

  4. getCollection

  5. (

  6. collectionName

  7. )

  8. >

  9. db

  10. .

  11. collectionName

刪除集合

  1. >

  2. db

  3. .

  4. collectionName

  5. .

  6. drop

  7. ()

插入

MongoDB 插入方法有 insertOne()、insertMany()、insert()、save() 。其中 insert() 功能就包括了 insertOne() 和 insertMany() 功能。

insertOne

insertOne() 是向數據庫中插入一個文檔,語法格式為:

  1. db

  2. .

  3. collect

  4. .

  5. insertOne

  6. (

  7. <

  8. document

  9. >,

  10. {

  11. writeConcern

  12. :

  13. <

  14. document

  15. >

  16. }

  17. )

指令 insertOne() 中參數:

  • document 參數為 插入的 BSON 數據

  • writeConcern 為寫入策略,是可選參數

向 MongoDB 的 ytao 數據庫中,插入一條 article 集合的數據

  1. db

  2. .

  3. article

  4. .

  5. insertOne

  6. (

  7. {

  8. title

  9. :

  10. "Dubbo 負載均衡的實現"

  11. ,

  12. url

  13. :

  14. "https://ytao.top/2020/05/02/23-dubbo-loadbalance/"

  15. ,

  16. author

  17. :

  18. "ytao"

  19. }

  20. )

數據庫數據為:

注意: 如果插入數據時,沒指定 _id ,則會自動生成 _id ;如果指定 _id ,則必須 _id 在數據庫中存在,否則會報錯插入失敗。

insertMany

insertMany() 方法是一次插入多個文檔,語法格式為:

  1. db

  2. .

  3. collect

  4. .

  5. insertMany

  6. (

  7. [<

  8. document

  9. 1

  10. >,

  11. <

  12. document

  13. 2

  14. >],

  15. {

  16. writeConcern

  17. :

  18. <

  19. document

  20. >,

  21. ordered

  22. :

  23. <

  24. boolean

  25. >

  26. }

  27. )

參數 ordered為是否有序插入文檔,可選參數,默認 true。

向 MongoDB 的 ytao 數據庫中,插入了兩條 article 集合的數據

  1. db

  2. .

  3. article

  4. .

  5. insertMany

  6. (

  7. [

  8. {

  9. title

  10. :

  11. "Netty中粘包/拆包處理"

  12. ,

  13. url

  14. :

  15. "https://ytao.top/2019/12/09/10-netty/"

  16. ,

  17. author

  18. :

  19. "ytao"

  20. },

  21. {

  22. title

  23. :

  24. "WebSocket實現Web端即時通信"

  25. ,

  26. url

  27. :

  28. "https://ytao.top/2019/11/17/7_websocket/"

  29. ,

  30. author

  31. :

  32. "ytao"

  33. }

  34. ]

  35. )

插入后的數據

同理,與 insertOne() 相同,插入重復插入已存在的 _id ,否則報錯。

insert

insert() 可以插入單個或多個文檔,這個也是最較為常用的方法,其語法為

  1. db

  2. .

  3. collect

  4. .

  5. insert

  6. (

  7. <

  8. document

  9. >

  10. or

  11. [<

  12. document

  13. 1

  14. >,

  15. <

  16. document

  17. 2

  18. >],

  19. {

  20. writeConcern

  21. :

  22. <

  23. document

  24. >,

  25. ordered

  26. :

  27. <

  28. boolean

  29. >

  30. }

  31. )

插入的文檔如果是單個,則類似 insertOne() 的插入方式;如果插入的文檔是多個,則類似 insertMany() 的插入方式。其中參數 writeConcern 和 ordered 都是一樣。

save

save() 也可以進行數據插入,當新插入的 _id 存在時,會將已存在的文檔進行覆蓋,如果 _id 不存在時,則類似 insertOne() 的方式插入。其操作語法:

  1. db

  2. .

  3. collect

  4. .

  5. save

  6. (

  7. <

  8. document

  9. >,

  10. {

  11. writeConcern

  12. :

  13. <

  14. document

  15. >

  16. }

  17. )

更新

進行更新的方法有 * updateOne()、updateMany()、update()、replaceOne() 以及 save() *。其中 update() 包括 updateOne() 和 updateMany() 的功能。

update

通過 update() 可以更新一個或多個文檔,其語法:

  1. db

  2. .

  3. collection

  4. .

  5. update

  6. (

  7. <

  8. query

  9. >,

  10. <

  11. update

  12. >,

  13. {

  14. upsert

  15. :

  16. <

  17. boolean

  18. >,

  19. multi

  20. :

  21. <

  22. boolean

  23. >,

  24. writeConcern

  25. <

  26. document

  27. >,

  28. collation

  29. :

  30. <

  31. document

  32. >,

  33. arrayFilters

  34. :

  35. [<

  36. filter1

  37. >,<

  38. filter2

  39. >]

  40. }

  41. )

update 的參數:

  • query:要更新文檔的查詢條件

  • update:要更新的字段

  • upsert:默認為 false。當設置 true 時,如果更新的條件沒有匹配到數據時,則插入此更新條件。反之,設為 false 時,則不插入。

  • multi:默認為 false。當查詢條件匹配到多條數據時,如果設置為 true,則會更新所有匹配的數據;如果設置為 false,則更新匹配出的第一條數據。

  • writeConcern:和上面 insert 的參數一樣。

  • collation:更新數據的排序規則。

  • arrayFilters:更新數據中數組格式數據的某個特定元素。

接下來就演示兩個例子,一個普通更新,一個帶使用 arrayFilters 數據的更新,這個比較難說明,但通過例子就容易理解。

更新前數據:

  1. {

  2. "_id"

  3. :

  4. ObjectId

  5. (

  6. "5ed299cee89845fb9ec805e4"

  7. ),

  8. "title"

  9. :

  10. "WebSocket實現Web端即時通信"

  11. ,

  12. "url"

  13. :

  14. "https://ytao.top/2019/11/17/7_websocket/"

  15. ,

  16. "author"

  17. :

  18. "ytao"

  19. }

案例一 將 author數據更新為 ["楊滔","ytao"]

  1. db

  2. .

  3. article

  4. .

  5. update

  6. (

  7. {

  8. title

  9. :

  10. "WebSocket實現Web端即時通信"

  11. },

  12. {

  13. $set

  14. :

  15. {

  16. author

  17. :

  18. [

  19. "楊滔"

  20. ,

  21. "ytao"

  22. ]}}

  23. )

案例二 將 author數據 ["楊滔","ytao"]的 楊滔更新為 YangTao

  1. db

  2. .

  3. article

  4. .

  5. update

  6. (

  7. {

  8. title

  9. :

  10. "WebSocket實現Web端即時通信"

  11. },

  12. {

  13. $set

  14. :

  15. {

  16. "author.$[idx]"

  17. :

  18. "YangTao"

  19. }},

  20. {

  21. arrayFilters

  22. :[

  23. {

  24. "idx"

  25. :

  26. {

  27. $eq

  28. :

  29. "楊滔"

  30. }}

  31. ]

  32. }

  33. )

上面 idx表示數組中元素的位置。

更新后的數據

updateOne

updateOne() 只能更新一個文檔,和 update() 使用類似,將 multi參數值為 false 一樣,這里不再使用案例演示。

語法:

  1. db

  2. .

  3. collection

  4. .

  5. updateOne

  6. (

  7. <

  8. filter

  9. >,

  10. <

  11. update

  12. >,

  13. {

  14. upsert

  15. :

  16. <

  17. boolean

  18. >,

  19. writeConcern

  20. :

  21. <

  22. document

  23. >,

  24. collation

  25. :

  26. <

  27. document

  28. >,

  29. arrayFilters

  30. :

  31. [

  32. <

  33. filterdocument1

  34. >,

  35. ...

  36. ],

  37. hint

  38. :

  39. <

  40. document

  41. |

  42. string

  43. >

  44. }

  45. )

hint是 4.2.1版本中新增的參數,用于指定更新文檔的索引。

updateMany

updateMany() 同樣和 update() 更新多個文檔使用一樣。

語法:

  1. db

  2. .

  3. collection

  4. .

  5. updateMany

  6. (

  7. <

  8. filter

  9. >,

  10. <

  11. update

  12. >,

  13. {

  14. upsert

  15. :

  16. <

  17. boolean

  18. >,

  19. writeConcern

  20. :

  21. <

  22. document

  23. >,

  24. collation

  25. :

  26. <

  27. document

  28. >,

  29. arrayFilters

  30. :

  31. [

  32. <

  33. filterdocument1

  34. >,

  35. ...

  36. ],

  37. hint

  38. :

  39. <

  40. document

  41. |

  42. string

  43. >

  44. }

  45. )

replaceOne

replaceOne 將一個文檔完全覆蓋,并且不需要指定 _id。只能覆蓋一個文檔。

語法:

  1. db

  2. .

  3. collection

  4. .

  5. replaceOne

  6. (

  7. <

  8. filter

  9. >,

  10. <

  11. replacement

  12. >,

  13. {

  14. upsert

  15. :

  16. <

  17. boolean

  18. >,

  19. writeConcern

  20. :

  21. <

  22. document

  23. >,

  24. collation

  25. :

  26. <

  27. document

  28. >,

  29. hint

  30. :

  31. <

  32. document

  33. |

  34. string

  35. >

  36. }

  37. )

save

save() 在更新中是指定 _id 的方式進行文檔覆蓋。即上文插入中的 save() 用法。

刪除

刪除文檔的方法有 deleteOne()、deleteMany()、remove()

deleteOne

deleteOne() 一次只能刪除一個文檔,其語法:

  1. db

  2. .

  3. collection

  4. .

  5. deleteOne

  6. (

  7. <

  8. filter

  9. >,

  10. {

  11. writeConcern

  12. :

  13. <

  14. document

  15. >,

  16. collation

  17. :

  18. <

  19. document

  20. >

  21. }

  22. )

filter為刪除文檔的過濾條件。

deleteMany

deleteMany() 一次可刪除多個匹配到的文檔,其語法:

  1. db

  2. .

  3. collection

  4. .

  5. deleteMany

  6. (

  7. <

  8. filter

  9. >,

  10. {

  11. writeConcern

  12. :

  13. <

  14. document

  15. >,

  16. collation

  17. :

  18. <

  19. document

  20. >

  21. }

  22. )

remove

remove() 是刪除查詢出的文檔,其語法有兩個:

  1. db

  2. .

  3. collection

  4. .

  5. remove

  6. (

  7. <

  8. query

  9. >,

  10. <

  11. justOne

  12. >

  13. )

或者

  1. db

  2. .

  3. collection

  4. .

  5. remove

  6. (

  7. <

  8. query

  9. >,

  10. {

  11. justOne

  12. :

  13. <

  14. boolean

  15. >,

  16. writeConcern

  17. :

  18. <

  19. document

  20. >,

  21. collation

  22. :

  23. <

  24. document

  25. >

  26. }

  27. )

justOne參數默認為 false,表示刪除全部匹配到的數據;true 表示只刪除第一個文檔

查詢

MongoDB 中常用的基本查詢有 * findOne() * 和 * find() *。

findOne

findOne() 只返回匹配到的第一個文檔,語法為:

  1. db

  2. .

  3. collection

  4. .

  5. findOne

  6. (

  7. <

  8. query

  9. >,

  10. <

  11. projection

  12. >

  13. )

參數說明:

  • query 表示查詢條件。

  • projection 表示返回的字段(Field)。

下面查詢一個文檔,并且只返回 title和 url

通過指定字段的 value 為 1,即表示查詢后返回的字段。

find

find() 是返回所有匹配到的集合,語法為:

  1. db

  2. .

  3. collection

  4. .

  5. find

  6. (

  7. <

  8. query

  9. >,

  10. <

  11. projection

  12. >

  13. )

下面案例查詢查詢結果:

總結

本文對 MongoDB 的入門和基本操作進行了簡單的了解,在這使用過程中,有點類似關系型數據庫操作的影子,所以對有關系型數據庫使用經驗的人,上手是較為簡單的。

更多使用操作,官方文檔:https://docs.mongodb.com/manual/reference/

[我要糾錯]
文:王振袢&發表于江蘇
關鍵詞: 前言 MongoDB 一個 基于 分布式

來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:MongoDB 安裝及文檔的基本操作

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利

蘇公網安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統計

主站蜘蛛池模板: 久久精品免看国产 | 国产精选在线 | 波多 在线 | 天天爽天天爱 | 国产精品亚洲专区在线观看 | 日韩中文字幕在线观看视频 | a级毛片在线视频免费观看 a级免费看 | 在线一区三区四区产品动漫 | 一个人看的www在线 一个人看的www在线播放 | 日韩欧美中文字幕出 | 五月婷婷在线观看视频 | 黄色操视频 | se01在线看片| 伊人天伊人天天网综合视频 | 女人色极影院 | 玖玖在线精品 | 成人激情视频在线 | 国产成人精品福利网站人 | 免费色视频网站 | 污污视频网址 | 欧洲三级在线观看 | 欧美三区在线观看 | 伊人网综合在线 | 无遮羞成人的动漫在线观看 | 老司机午夜精品视频播放 | 精品伊人久久久 | 国产精品日产三级在线观看 | 国内精品小视频 | 欧美视频二区 | www.九色视频 | 免费亚洲视频在线观看 | 成人免费男女视频网站慢动作 | 国产免费理论片在线观看 | 最近新韩国日本免费看 | 中文字幕不卡一区 | 午夜操一操 | 日韩在线高清 | 下面一进一出好爽视频 | 在线一级黄色片 | 99视频有精品视频免费观看 | 日日干日日摸 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產品享最低成本,有需要聯系,
  • 卡爾蔡司鏡片優惠店,鏡片價格低
  • 蘋果原裝手機殼