日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MongoDB 簡介

1. 易于使用:沒有固定的模式,根據需要添加和刪除字段更加容易

2. 易于擴展:MongoDB的設計采用橫向擴展。面向文檔的數據模型使它能很容易的再多臺服務器之間進行分割。自動處理跨越集群的數據和負載,自動重新分配文檔。

? ? ? ? ? ? ? ? ? ?以及將用戶請求路由到正確的機器上。

3. 豐富的功能:索引,聚合,特殊的集合類型(過期,固定大小的集合),文件存儲。

4. 卓越的性能

?

MongoDB基礎知識

1. 文檔:文檔就是鍵值對的一個有序集。

? ? 1). MongoDB不但區分類型,而且區分大小寫。

? ? 2). 文檔中的鍵值對是有序的:{"x":1,"y":2}與{"y":2,"x":1}是不同的。

2. 集合:集合就是一組文檔

? ? 1). 集合是動態模式的。這意味著一個集合里面的文檔可以是各式各樣的。

? ? 2). 集合命名:不能包含"system.",不能有保留字符'$'

? ? 3). 子集合:組織集合的一種管理是使用"."分割不同命名空間的子集合。很多MongoDB工具類都使用了子集合。在MongoDB中使用子集合來組織數據非常高效,值得推薦。

3. 數據庫:在MongoDB中,多個文檔組成集合,而多個集合可以組成數據庫。

? ? 1). 數據庫名區分大小寫,即便是在不區分大小寫的文件系統中也是如此。簡單起見,數據庫名應該全部小寫。

? ? 2). 數據庫最終會變成文件系統里的文件,而數據庫名就是相對應的文件名。

? ? 3). 保留數據庫:

? ? ? ? ?admin: 如果將一個用戶添加到admin數據庫,這個用戶將自動獲取所有數據庫權限。再者,一些特定的服務器命令也只能從admin數據庫運行,如列出所有數據庫或關閉服務器。

? ? ? ? ?local: 這個數據庫永遠不可以復制,且一臺服務器上的所有本地集合都可以存儲在這個數據庫中。

? ? ? ? ?config:MongoDB用于分片設置時,分片信息會存儲在config數據庫中。

? ? 4). 把數據庫名添加到集合名前,得到集合的完全限定名,即命名空間。命名空間的長度不得超過121字節,且在實際使用中應小于100字節。

4. shell中的基本操作?

? ? 1). insert

? ? 2). find和findOne

? ? 3). update , 至少兩個參數,第一個是限定條件(用于匹配待更新的文檔),第二個是新的文檔

? ? 4). remove , 永久刪除,如果沒有任何參數,它會刪除所有文檔

5. 數據類型

? ? 1). 基本類型:null({"x":null}) , 布爾型 , 數值 ,字符串,日期({"x":new Date()} 日期被存儲為自新紀元已經過的毫秒,不存儲時區),正則表達式,數組,內嵌文檔,對象id,

? ? ? ? ? ? ? ? ? ? ? 二進制數據,代碼

? ? 2). ObjectId是"_id"的默認類型。ObjectId的12字節按照如下方式生成:時間戳 ?機器 ?PID 計數器

? ? 3). 如果插入文檔時沒有"_id"鍵,系統會自動幫你創建一個。可以由MongoDB服務器來做這件事,但通常會在客戶端由驅動程序完成。

6. 使用MongoDB shell?

? ? 1). 在啟動shell時指定機器名和端口,就可以連接到一臺不同的機器: mongo some-host:30000/myDB ? ? ? ? ? // ? ?IP:port/dbname

? ? 2). 啟動mongo shell 時不連接到任何mongod有時很方便。通過--nodb參數啟動shell,啟動時就不會連接任何數據庫:mongo --nodb?

? ? ? ? ??啟動之后,在需要時運行new Mongo(hostname)命令就可以連接到想要的mongod了: conn = new Mongo("some-host:30000") , 然后執行 db=conn.getDB("myDB")

? ? 3). 對應MongoDB 特有的功能,shell內置了幫助文檔,可以使用help命令查看:help

? ? 4). 可以通過db.help()查看數據庫級別的幫助,使用db.foo.help()查看集合級別的幫助

? ? 5). 直接在shell中輸入函數名(函數名后不要輸入小括號),這樣就可以看到相應的JS實現代碼。

7. 使用shell執行腳本

? ? 1). 直接在命令中傳遞腳本:mongo ?s1.js ? s2.js?

? ? 2). 如需在指定的主機或端口上執行腳本,需指定地址和腳本名稱:mongo --quiet server-1:30000/foo s1.js ? s2.js

? ? 3). 使用load函數:load("s1.js")

? ? 4). 可以使用腳本將變量注入到shell

8. 創建.mongorc.js 文件

? ? 1). 如果某些腳本會被頻繁的加載,可以將它們添加到mongorc.js 文件中。這個文件會在?啟動shell時?自動運行。 ??

? ? 2). .mongorc.js最常見的用途之一是移除那些比較"危險的函數"。可以在這里集中重寫這些方法。這種方式并不能保護數據庫,只能預防自己手誤。

9. 定制shell提示

? ? 通常來說,提示函數中應該包含對getLastError的調用。這樣可以捕獲數據庫錯誤,而且可以在shell斷開時自動重連。

10. 編輯復合變量

? ? ? 1). shell不可以編輯之前的行。對于大塊的代碼或者對象,你可能更愿意在編輯器中編輯。為了方便地調用編輯器,可以在shell中設置EDITOR變量(也可以在環境變量后總設置)。

? ? ? ? ? ? EDITOR="/usr/bin/emacs"

? ? ? ? ? ? 現在編輯一個變量,可以使用"edit 變量名"這個命令。修改完后,保存并退出編輯器。變量就會被重新解析然后加載會shell。

? ? ? 2). 在.mongorc.js文件中添加一行內容,EDITOR="編輯器路徑";,以后就不用單獨設置EDITOR變量了。

11. 集合命名注意事項:

? ? ? 1). 可以使用db.collectionName獲取一個集合內容,但是如果集合名稱中包含保留字或者無效的JS屬性名,db.collectionName就不能正常工作了。

? ? ? 2). 訪問一些包含保留字或者無效的JS屬性名的集合可以使用:db.getCollection("collectionName")

? ? ? 3). 數組訪問法

?

啟動和停止MongoDB

1. 啟動MongoDB

? ? 1). 執行mongod程序可啟動MongoDB服務器,mongod在啟動時可使用很多可配置的選項,在命令行中運行mongod --help可列出這些選項。

? ? 2). mongod 常用配置選項:

? ? ? ? ?--dbpath : 使用此選項可以指定一個目錄為數據目錄。需要啟動前建立好目錄。mongod啟動時,會在其數據目錄中創建一個mongod.lock文件,以阻止其他mongod進程使用該目錄。

? ? ? ? ?--port : 指定服務器監聽端口。默認27017。

? ? ? ? ?--fork : 啟動此選項以調用fork創建子線程,在后臺運行MongoDB。啟用--fork選項時,必須同時啟用--logpath選項。

? ? ? ? ?--logpath:使用此選項,所有輸出信息會被發送到指定文件,而非在命令行上輸出。文件不存在就新建,如果存在覆蓋。如需保留舊日志,需啟動時再增加選項--logappend選項。

? ? ? ? ?--directoryperdb:啟動該選項可將每個數據庫存放在單獨的目錄中。

? ? ? ? ?--config:額外加載配置文件。該選項通常用于確保每次重新啟動時的選項都是一致的。

? ? ? ? ? 舉例:./mongd ?--port 5586 --fork --logpath mongodb.log --logappend?

? ? ?3). 首次安裝啟動MongoDB時,應查看一下日志,看看都會有哪些警告。

? ? ?4). 使用配置文件,啟動命令:./mongod --config ?mongodb.conf

? ? ? ? ? 配置文件內容舉例:

# 這里可以寫注釋 port=5586 fork=true # 后臺啟動 logpath=/var/log/mognodb.log logappend=true

2. 停止MongoDB

? ? 1). 使用shutdown命令--{"shutdown":1}

? ? 2). shell提供了一個輔助函數,用以簡單執行shutdown命令:db.shutdownServer()

? ? 3). 可使用force選項,強制關閉主節點:db.adminCommand({"shutdown":1,"force":true})

? ? 4). kill -2 pid 或者 kill pid?

? ? 5). 在主節點上運行shutdown命令時,服務器在關閉前,會等待備份節點追趕主節點以保持同步。這將回滾的可能性降至最低,但shutdown操作有失敗的可能。如果幾秒內沒有

? ? ? ? ?備份節點成功同步,則shutdown操作失敗,主節點亦不會停止運行。可以使用force選項,強制關閉主節點。這相當于發送一個SIGINT或者SIGTERM信號(幾種做法都能使

? ? ? ? ?MongoDB安全地停止運行,但可能會有數據未能完成同步)。如服務器正在終端作為前臺進程運行,那么按下Ctrl+C快捷鍵也能發送一個SIGINT信號。另外,kill之類的命令,

? ? ? ? ?也可以用于發送這些信號。假設mongod的PID為10014,那么相應的命令就是kill -2 10014(發送SIGINT信號)或kill10014(發送SIGTERM信號)

? ? 6). mongod收到SIGINT或者SIGTERM信號后,會安全地停止運行。這意味著mongod會等當前正在進行的操作或者文件預分配結束(耗時一定時間),再關閉所有打開的連接,將

? ? ? ? ?緩存寫入硬盤,繼而結束運行。但不會等待備份節點追趕上主節點。

3. 安全性

? ? 1). 最好的方式是設置防火墻,只允許內部網絡地址對MongoDB的訪問。

? ? 2). --bind_ip : 指定MongoDB監聽的接口。我們通常將其設置為一個內部IP地址,從而保證應用服務器和集群中的其他成員訪問,同時拒絕外網訪問。

? ? 3). --nohttpinterface : 關閉默認啟動的微型HTTP服務器

? ? 4). --nounixsocket : 禁用UNIX socket 來進行連接。

? ? 5). --noscripting : 禁用服務器端JavaScript腳本的運行。可能會引起一些輔助函數失效。

? ? 6). 數據加密和SSL安全連接

4. 日志

? ? 1). MongoDB會輸出大量日志消息,但請不要使用--quiet選項(該選項會隱藏部分日志消息)。保持日志級別為默認值通常不錯,此時日志中有足夠的信息進行基本調試(如耗時

? ? ? ? ?過長或啟動異常的原因等)。調試應用某特定異常問題時,可以使用一些選項從日志中獲取更多信息。

? ? 2). 在重啟MongoDB時,可通過在參數中附加數據更多的"v"(即:-v,-vv,-vvv,-vvvv,-vvvvv) 或者運行setParameter命令,完成日志級別(log level)的更改。

? ? ? ? ?db.adminCommand({"setParameter":1,"logLevel":3})

? ? ? ? ?記得將日志級別重設為0,否則日志中會存在過多不必要內容。日志級別調高到5時,mongod會在日志中記錄幾乎所有操作,包括每一個請求所處理的內容。如果記錄所有

? ? ? ? ?內容,會產生大量的磁盤讀寫操作(IO),可能會拖慢系統運行。

? ? 3). 如需即時看到正在運行的所有操作,打開分析器不失為一個更好的方法。

? ? 4). MongoDB默認記錄耗時100毫秒的查詢,可以通過setProfilingLevel命令來更改次閾值。

? ? 5). 設置一個計劃任務以便每天或者每周分割日志文件。如果使用--logpath選項啟動MongoDB,以進程發送一個SIGUSR1信號即時其對日志進行分割。也可以使用logRotate

? ? ? ? ?命令達到相同目的:db.adminCommond({"logRotate":1})

? ?

轉載于:https://www.cnblogs.com/Jtianlin/p/5084306.html

總結

以上是生活随笔為你收集整理的Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。