MongoDB1 mongodb介紹, 啟動和配置, 賬號管理, 資料庫操作curd操作, 集合操作
阿新 • • 發佈:2020-12-15
# 1 一個非關係型資料庫(表和表間沒聯絡,不能建外來鍵),文件型資料庫(json儲存的) ## Mongodb可以存特殊的集合型別(一個欄位可以存字典,列表)。mysql是不支援這種格式的,如果要存,只能轉成json格式存到欄位裡。實在沒辦法了,在欄位裡存json格式,加刪資料,把json改下存進去。 # 2 mysql mongodb 資料庫 資料庫(database) 表 集合(collection) 行 文件(document) 列 field(欄位) 索引 索引 連表 不支援(可以用子查詢(表join不支援,像django orm__連表關聯查詢不支援))#大型專案一般不建外來鍵關聯,join。這兩種非常異響效能 主鍵 將_id欄位設為主鍵 # 3 文件 就是個字典{"name":"lqz","age":18} ##意味著可以直接傳給前端,不需要用orm,把資料轉成json格式給前端 ## 需要注意的點: #文件中的鍵/值是有序的 #值可以是字串,數字,其他集合型別(列表,字典) #型別區分大小寫 #文件中不能有重複的鍵 #文件中的值可以是多種不同的資料型別,也可以是一個完整的內嵌文件。鍵可以是任意UTF-8字元 # 4 一組文件組成一個集合 -小小的問題(可以組成一個文件) {"name":"lqz","age":18} {"yyy":"yyy","kkk":90} {"xxx":"xxx"} # 5 多個集合組成一個數據庫 # 6 安裝和啟動 -下載安裝包:https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi/download -需要下載個客戶端(類似於:Navicat),robo 3T # 7 安裝 # 在linux和mac下,只要把包解壓開就行,不需要安裝 -mongodb-win32-x86_64-2012plus-4.2.6-signed.msi一路下一步,將mogodb設定成服務,注意資料目錄和日誌目錄,mongod compass那個玩意不要裝 #最好預設裝c盤,經測試裝d盤會報許可權問題,刪服務,用命令建服務 -robo3t-1.3.1-windows-x86_64-7419c406.exe. 一路下一步 ## 在服務中可以把mongodb服務改成手動啟動,開機不用自動啟動 # net start MongoDB # net stop MongoDB
mongodb安裝
robo3t安裝
#### 附上之前自己弄的mongodb3.4.10安裝方法和使用 # https://blog.csdn.net/baidu_31333625/article/details/73126657 配置 # 客戶端登入服務,注意,這裡通過localhost登入,如果需要遠端登入,必須先登入認證才行。 # mongo --port 27017 # django增刪查改 # https://blog.csdn.net/kuangshp128/article/details/79039366
# 1 mongodb的啟動命令 -C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service -mongod.exe --config 配置檔案 -在mongdb的安裝路徑下bin路徑有:mongod.exe(服務端) 和 mongod.cfg(配置檔案) mongo.exe(客戶端) -在終端到路徑下(或加入環境變數)輸入mongo.exe,可以連線進去 show databases; # 可以檢視所有的資料庫 -一般我們喜歡用圖形化客戶端連線:robo3t -create---》輸入地址,埠號--》連線
配置檔案
storage: dbPath: C:\Program Files\MongoDB\Server\4.2\data # 資料路徑 journal: enabled: true # where to write logging data. systemLog: destination: file logAppend: true path: C:\Program Files\MongoDB\Server\4.2\log\mongod.log # 日誌檔案路徑 # network interfaces net: port: 27017 # 監聽的埠號 bindIp: 0.0.0.0 # 繫結的地址0.0.0.0代表遠端可以連線 # 2 可以使用客戶端連線 ./mongo --host 10.0.0.5 --port 27017 # 3 可以用圖形化介面的客戶端連線
# 1 跟mysql有點區別:mongodb的使用者是建在資料庫下的,但是可以對其他庫有許可權(mysql使用者是單獨存在庫裡,也是user表) # ——可以用robo3t,在System下admin庫下Users表中右鍵Add User建立使用者(也可以用下面方法新增)
# 2 操作步驟(全域性有一個db,在哪個庫下,db就是誰) -show databases; # 檢視多有資料庫 -use admin; # 使用admin這個庫 # 輸入db可以看當前在哪個庫下 -db.createUser( # db的一個方法,在當前庫下建立一個使用者 { user: "root", # 使用者名稱 pwd: "123", # 方法 roles: [ { role: "root", db: "admin" } ] # 使用者的許可權,使用者管理的資料庫(對哪個庫操作) } ) # 建立成功後,可以在圖形介面裡開啟Users表看到 use test # 空資料庫不顯示 db.createUser( { user: "lqz", pwd: "123", roles: [ { role: "readWrite", db: "test" }, # 許可權為讀寫,針對的是test庫 { role: "read", db: "db1" } ] # 許可權為只讀,針對的是db1庫 } ) # 5 檢視使用者 db.getUser("root") # 參看名字為root的人 -show users # 檢視當前庫下的賬戶 #### 瞭解 #3、重啟資料庫 net stop MongoDB net start MongoDB #需要以開啟認證的方式啟動mongodb服務 mongod --config "mongod.cfg" --auth #4、登入:注意使用雙引號而非單引號 #以管理員登陸 ./mongo --host 10.0.0.5 --port 27017 -u "root" -p "123" --authenticationDatabase "admin" # 以使用者lqz登陸(只對test庫有許可權) ./mongo --host 10.0.0.5 --port 27017 -u "lqz" -p "123" --authenticationDatabase "test" mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" 也可以在登入之後用db.auth("賬號","密碼")登入 mongo show dbs use admin # db是一個全域性變數,代表當前所有庫 db.auth("root","123") show tables;
# 增加 use test # 有就進去,沒有就建立並進去(如沒有資料,表並沒真正生成) # 輸入db可以看當前是什麼庫 db.t1.insert({"name":"lqz"}) # 庫,集合,文件全都進去了(朝test庫下面的t1表裡插入資料,表會生成) #注意: db.t1.insert({"yy":"lqz"}) # db.t1.insert({"xx":"lqz"}) ## 欄位完全不一致也可以插入 # 查詢 show databases; show dbs # 兩種方法都行 # 刪除 use test #先切換到要刪的庫下 db.dropDatabase() #刪除當前庫
# 新增 use test db.table1.insert({"name":"lqz"}) # 有table1就使用,沒有就新增(此處若沒test,也會建立) db.table2.insert({'b':2}) # 查詢(都可以) show tables # 為了和mysql統一語法 show collections # 刪除 db.table1.drop()