MongoDB基礎教程(安裝、操做、配置)

MongoDB


下載安裝

簡易安裝linux

# redhat, centOS
sudo yum install -y mongodb

# debian, ubuntu
sudo apt install -y mongodb

若是簡易安裝失敗,各類操做系統具體的安裝請移步官方文檔:mongodb

https://docs.mongodb.com/manual/administration/install-on-linux/shell

修改配置文件

vi /etc/mongod.conf數據庫

bind_ip默認是127.0.0.1,只能夠本地鏈接,修改成0.0.0.0便可ubuntu


MongoDB 數據文件默認存儲在 /var/lib/mongo 目錄,默認日誌文件在 /var/log/mongodb 中。數組

若是要修改,能夠在 /etc/mongod.conf 配置中指定備用日誌和數據文件目錄。服務器

查看MongoDB是否啓動成功:app

查看日誌文件:cat /var/log/mongodb/mongod.log性能

日誌文件應該有以下一句說明:操作系統

[initandlisten] waiting for connections on port <port>

卸載移除mongo

yum erase $(rpm -qa | grep mongodb-org)

移除數據庫文件和日誌文件

rm -r /var/log/mongodb

rm -r /var/lib/mongo


MongoDB操做命令

服務命令

查看幫助:mongod --help

啓動:systemctl start mongod

中止:systemctl stop mongod

重啓:systemctl restart mongod

查看是否啓動成功: ps aux | grep mongod

配置文件位置:/etc/mongo.conf

默認端口:27017

日誌的位置:/var/log/mongodb/mongod.log


數據庫命令

查看當前數據庫:db

查看全部數據庫:show databases/dbs

切換/新建數據庫:use databaseName

刪除當前數據庫:db.dropDatabase()


集合基礎命令

不手動建立集合:

向不存在的集合中第一次加入數據時,集合會被建立出來

手動建立集合:

db.createCollection(name,options)

eg:——db.createCollection('sub',{capped:true, size:10})

capped:默認值爲false表示不設置上限,true相反

size:當capped爲true時,須要指定此參數,表示上限的大小,當文檔達到上限,會覆蓋以前的數據。相似於先進先出隊列。

查看集合:show collections

查看所有集合內容:db.collectionName.find()

刪除集合:db.collectionName.drop()

查詢指定記錄:db.collectionName.find("name": "李四")

插入數據:

# 若是數據庫中不存在集合,就建立並插入這些數據。裏面的key-value不用保持一致
db.student.insert({"name":"小明","age":"12","sex":"男","class":"六年級一班"});

db.student.insert({"name":"小紅","age":"12","sex":"女","phone":"18513081650","class":"六年級二班"});

#同時插入多條數據
db.student.insert([{"name":"小李子","age":"12","sex":"男","class":"六年級二班"},{"name":"小麗","age":"12","sex":"女","phone":"18513081650","class":"六年級一班"}]);

更新數據:

db.student.update({"name":"小明"},{"name":"張小明"});#若是有多條語句,只修改第一條,會覆蓋原有數據
db.student.update({"12":"女"},{"name":"劉小花"});
db.student.update({"name":"小李子"},{$set:{"name":"李小子"}});#只想改某個key的value使用set
db.student.update({"name":"小麗"},{$set:{"name":"周小麗"}},{multi:true});#把全部的記錄都改了

查詢數據:

# 查詢所有
db.student.find();
# 查詢指定記錄,返回這一行結果
db.student.find({"name":"小麗"});
db.student.update({"name":"李小子"},{"name":"李子小","age":"12","sex":"男"});
# and操做
db.student.find({"name":"李子小","age":"12"});
# or操做
db.student.find({$or:[{"name":"李子小"},{"name":"張小明"}]});
# 格式化顯示
db.student.find().pretty();
# 獲取結果的行數
db.student.find().count();
# 按照sort裏面key的值排序,1爲正序,-1爲倒序
db.student.find().sort({"age":-1});

刪除數據:

# 刪除全部數據
db.student.remove();
# 按照條件刪除
db.student.remove({"22":"女"});
# 刪除幾條
db.student.remove({"sex":"男"},2);

建立用戶:

db.createUser({
    user: "your_user",
    pwd: "password",
    roles: [{role: "readWrite",db: "your_db"}]
})

數據類型

Object ID: 文檔ID

String: 字符串,必須是有效的UTF-8

Boolean: true or false

integer: 能夠是32或64,這取決於服務器

Double:存儲浮點值

Arrays: 數組或列表,多個值存儲到一個鍵

Object: 用於嵌入式文檔,即一個值爲一個文檔

Null: 存儲Null值

Timestamp: 時間戳,表示從1970-1-1到如今的總秒數

Date:存儲當前日期或時間的Unix時間格式


設置/查看具體參數

設置參數
  • db.adminCommand({setFeatureCompatibilityVersion:'4.0'}) // 修改版本到4.0
  • db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 300 } ) // 修改事務超時時間爲5分鐘開啓事務支持
  • db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } ) // 修改事務獲取鎖的等待時間20毫秒
查看具體參數

db.adminCommand( { getParameter: 1, transactionLifetimeLimitSeconds: 1 } )

查看是否爲Master

db.isMaster()


將MongoDB中的collection導出爲csv

mongoexport -h localhost -d dbname -c collname -f field1,field2 --csv -o output.csv


Mongo配置文件詳解

文件路徑/etc/mongod.conf

verbose:

日誌信息冗餘,默認false。提升內部報告標準輸出或記錄到logpath配置的日誌文件中,要啓用verbose或啓用verbosity用vvvv參數。
eg:verbose = true 或 vvvv = true 
ps:啓動verbose冗長信息,級別有vv~vvvvv,v越多級別越高,日誌文件中記錄的信息越詳細。

port:

端口。默認27017,MongoDB的默認服務TCP端口,監聽客戶端鏈接。要是端口設置小於1024,好比1021,則須要root權限啓動,不能用mongodb帳號啓動,不然報錯。

port = 27017

bind_ip:

綁定地址。默認是127.0.0.1,只能經過本地鏈接。進程綁定和監聽來自這個地址上的應用鏈接。要是須要給其餘的服務器鏈接,則須要註釋掉這個或者把IP改爲本機地址,能夠用逗號分隔的列表綁定多個IP地址。

bind_ip = 0.0.0.0

maxConns:

最大鏈接數。默認值:取決於系統限制。MongoDB中不會限制其自身的鏈接。當設置大於系統的限制,則無效,以系統限制爲準。這對於客戶端建立不少集合,容許鏈接超時而不關閉集合的時候,頗有用。
控制流量峯值時的鏈接。
ps:不能設置該值大於20000。

eg: maxConns = 100

objcheck:

強制驗證客戶端請求。強制驗證客戶端請求,確保客戶端毫不插入無效文件到數據庫中。對於嵌套文檔的對象,會有一點性能影響。

eg: objcheck = true 或 noobjcheck = false

logpath:

指定日誌文件,該文件將保存全部的日誌記錄,診斷信息。除非另有指定,mongod將全部的日誌信息輸出到標準輸出。若是沒有指定logappend,重啓則日誌會進行覆蓋操做。

logappend:寫日誌的模式,設置爲true爲追加。默認時覆蓋。若是未指定此設置,啓動時MongoDB將覆蓋現有的日誌文件。
logappend = true

syslog:

日誌輸出都發送到主機的syslog系統,而不是標準輸出到logpath指定日誌文件。syslog和logpath不能一塊兒用,會報錯:Cant use both a logpath and syslog

pidfilepath = /var/run/mongo.pid:

進程ID,沒有指定則啓動時就沒有PID文件,默認缺省。

pidfilepath = /var/run/mongo.pid

ps: 平時用一點查一點,而後記一點,再加上一些本身遇到的查官方文檔,最後匯聚成這樣的一篇博客。若以爲有冒犯的,請私信或者留言,會著名。

相關文章
相關標籤/搜索