MongoDB安裝配置、CRUD基本教程
阿新 • • 發佈:2019-01-07
MongoDB用法簡介
官方文件地址: 官方文件
下載安裝
- 首先下載安裝MongoDB。
- 然後配置環境變數:將安裝目錄 Server下的bin目錄新增到環境變數,如:E:\MongoDB\Server\3.4\bin
- 開啟cmd,輸入 mongod 檢測是否安裝配置完成。
啟動
- 在C盤根目錄下建立目錄 /data/db 然後在cmd 輸入 mongod 此時MongoDB就處於啟動狀態,目錄就是剛剛在C盤建立的目錄。
如果想在啟動時,自己選擇資料存放目錄,不用預設目錄:
mongod –dbpath 資料庫路徑 –port 埠號 (埠非必須)
此時不要關閉此視窗,此視窗在後臺執行,一旦關閉,MongoDB資料庫就關閉。
- 開啟新視窗,輸入mongo,相當於啟動客戶端,就連線上了資料庫。
這裡注意 啟動伺服器是 mongod 啟動客戶端是 mongo
將MongoDB設定為系統服務
- 建立兩個目錄分別為 db、log
在MongoDB安裝目錄下,找到 bin 的同級目錄,建立一個檔案為 mongod.cfg內容為:
systemLog: destination: file path: E:\MongoDB\data\log\mongod.log storage: dbPath: E:\MongoDB\data\db
其中路徑改為自己的真實路徑。
以管理員身份執行 cmd(在所有程式裡面找到cmd.exe 右鍵管理員執行)
執行:
sc.exe create MongoDB binPath= "\"E:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"E:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
其中路徑改為自己真實路徑。
這裡注意:第一次新增到系統服務很可能出錯,有可能安裝成功但是啟動不了,提示:
Windows不能在本地計算機啟動MongoDB,服務錯誤程式碼 100。
需要保證data目錄為空,然後刪除服務,重新執行一次:
sc delete MongoDB
sc.exe create MongoDB binPath= “\”E:\MongoDB\Server\3.4\bin\mongod.exe\” –service –config=\”E:\MongoDB\Server\3.4\mongod.cfg\”” DisplayName= “MongoDB” start= “auto”
即可,進入服務列表開啟服務,設定自動啟動。
接下來安裝圖形化工具
基本指令
show dbs
show databases
- 顯示當前的所有資料庫
use 資料庫名
- 進入到指定的資料庫中
db
- db表示的是當前所處的資料庫
show collections
- 顯示資料庫中所有的集合
增刪改查
增加
/*
向資料庫插入文件
db.<collection>.insert()
- 向集合中插入一個或多個文件
- 當我們向集合中插入文件時,如果沒有給文件指定_id屬性,則資料庫會自動為文件新增_id
該屬性用來作為文件的唯一標識
- _id我們可以自己指定,如果我們指定了資料庫就不會在添加了,如果自己指定_id 也必須確保它的唯一性
db.collection.insertOne()
- 插入一個文件物件
db.collection.insertMany()
- 插入多個文件物件
*/
db.stus.insert({name:"張三",age:10,gender:"男"});
//一次插入多條記錄
db.stus.insert([
{name:"李四",age:15,gender:"男"},
{name:"王二",age:16,gender:"女"},
{name:"趙武",age:14,gender:"女"}
]);
//自己設定一個id
db.stus.insert({_id:"hello",name:"豬八戒",age:28,gender:"男"});
db.stus.find();
//生成一個物件id 直接呼叫
ObjectId()
查詢
/*
查詢
db.collection.find()
- find()用來查詢集合中所有符合條件的文件
- find()可以接收一個物件作為條件引數
{} 表示查詢集合中所有的文件
{屬性:值} 查詢屬性是指定值的文件
- find()返回的是一個數組
- find()[0] 取到查詢的第一個文件
db.collection.findOne()
- 用來查詢集合中符合條件的第一個文件
- findOne()返回的是一個文件物件
db.collection.find({}).count()
- 查詢所有結果的數量
*/
db.stus.find({_id:"hello"});
db.stus.find({age:16 , name:"張三"});
db.stus.find({age:28});
db.stus.findOne({age:28});
db.stus.find({}).count();
修改
/*
修改
db.collection.update(查詢條件,新物件)
- update()預設情況下會使用新物件來替換舊的物件
- 如果需要修改指定的屬性,而不是替換需要使用“修改操作符”來完成修改
$set 可以用來修改文件中的指定屬性
$unset 可以用來刪除文件的指定屬性
- update()預設只會修改一個
db.collection.updateMany()
- 同時修改多個符合條件的文件
db.collection.updateOne()
- 修改一個符合條件的文件
db.collection.replaceOne()
- 替換一個文件
*/
db.stus.find({});
//替換 替換之後張三的所有屬性只剩下 age 其他都沒有
//相當於一個新的物件替換了原來的物件
db.stus.update({name:"張三"},{age:28});
//使用 set,只修改其中設定的屬性,不是替換
db.stus.update(
{"_id" : ObjectId("59c219689410bc1dbecc0709")},
{$set:{
gender:"男",
address:"北京"
}}
)
//unset是刪除設定的屬性,所以屬性值隨便寫,反正要刪除
db.stus.update(
{"_id" : ObjectId("59c219689410bc1dbecc0709")},
{$unset:{
address:1
}}
)
db.stus.updateMany(
{"name" : "李四"},
{
$set:{
address:"上海"
}
}
);
db.stus.update(
{"name" : "李四"},
{
$set:{
address:"深圳"
}
} ,
//有了這個屬性 會修改所有符合條件的記錄
{
multi:true
}
)
db.stus.find()
刪除
/*
db.collection.remove()
- 刪除一個或多個,可以第二個引數傳遞一個true,則只會刪除一個
- 如果傳遞一個空物件作為引數,則會刪除所有的
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.drop() 刪除集合
db.dropDatabase() 刪除資料庫
- 一般資料庫中的資料都不會刪除,所以刪除的方法很少呼叫
一般會在資料中新增一個欄位,來表示資料是否被刪除
*/
db.stus.insert([
{
name:"zbj",
isDel:0
},
{
name:"shs",
isDel:0
},
{
name:"ts",
isDel:0
}
]);
db.stus.updateOne({name:"ts"},{$set:{isDel:1}});
db.stus.find({isDel:0})