/**僅記錄自己的學習歷程**/
準備條件:從官網安裝好相應的MongoDB版本,自選位置建立如下文件夾用來存放MongoDB數據和日誌文件
1.初始化MongoDB
在MongoDB的安裝目錄下的bin文件夾下打開命令行窗口,執行命令,初始化數據庫存儲位置。命令執行成功之後,系統就會提示等待連接。
> mongod --dbpath D:\MongoData\db
如果使用win10的PowerShell
> .\mongod --dbpath D:\MongoData\db
2.連接MongoDB數據庫
初始化MongoDB存儲位置之後,在當前目錄下新開一個命令行窗口,輸入mongo命令就可以連接上MongoDB數據庫了,輸入show dbs 進行驗證(MongoDB默認存在三個數據庫admin,local和test)
> mongo
> show dbs
3.以Windows Service的方式啓動MongoDB
在目前的情況下,第一個命令行窗口不能關閉,一旦關閉我們就無法使用MongoDB數據庫,爲了能更方便的使用MongoDB服務,我們可以以Windows Service的方式啓動MongoDB服務。
依舊是在當前目錄下,以管理員身份打開命令行窗口,輸入以下命令。
> mongod -dbpath "D:\MongoData\db" -logpath "D:\MongoData\log\MongoDB.log" -install -serviceName "mongodb"
此時服務已經安裝成功,運行
> net start mongodb (開啓服務)
> net stop mongodb (關閉服務)
4.使用webstorm可視化插件
(1)從Intellij插件庫中安裝Mongo插件(這款插件在JetBrains的產品中貌似是通用的)
(2)配置
插件安裝完成之後,設置中會多出一個Mongo Servers選項。如果你希望可以直接在webstorm中使用MongoDB的命令行工具,Path to Mongo Shell 選項一定要指向mongo.exe,而不是mongod.exe或其它。因爲指向mongod.exe,點 Test 也可以驗證通過,但是Mongo Shell是用不了的
(3)添加Mongo Server
右上,綠色的加號,添加Mongo Server。MongoDB數據庫初始化是沒有權限驗證,可以自己設定,初學者可以先忽略該部分。在添加服務的選項頁中Label,顧名思義添加標籤方便自己記憶,主要設置你要使用的數據庫User Database選項即可。在Mongo服務開啓的情況下,點擊 Test Connection 進行測試。
(4)最後
下圖就是webstorm的可視化工具,點擊紅色箭頭所指的圖標,可以打開Mongo Shell
在Mongo Shell中輸入命令 show collections,使用 Ctrl+Enter 執行命令
5.使用mogoose進行CRUD
(1)安裝mogoose
> npm install moogse --save
(2)使用mogoose建立連接
SQL中的數據庫表叫做table,對應MongoDB數據庫中的collection。使用mongoose新建collection時,系統會默認collection爲複數,所以當你新建一個名爲"person"的表時,在數據庫中的實際名稱爲"people"。解決的一種方法是指定collectionName,並作爲參數傳入,如下面代碼第9-10行所示。
let mongoose = require('mongoose'); //引用mongoose
let UserSchema = new mongoose.Schema({ //創建數據模板
name: String,
age: {type: Number, default: 1},
sex: {type: String, default: "male"}, //指定數據類型,default選項指數據缺失時的默認值
birth: String
});
let db = mongoose.connection; //當使用mongoose.connect()方法連接數據庫時,數據庫的實例依附在mongoose.connection上
let collectionName='person';
let User = mongoose.model('person', UserSchema,collectionName); //將模板綁定到指定的collection上
mongoose.connect('mongodb://localhost:27017/test'); //連接數據庫
db.once('open', function () { //監測數據庫實例的狀態
console.log("Mongo is working");
});
db.once('close',function () { //監測數據庫實例的狀態
console.log("Mongo is closed!")
});
User.remove({name:'jiwei'},function () { //刪除操作
console.log("Remove success!")
});
User.create({ //增加記錄
name:'jiwei',
age:20,
sex:'female'
},function () {
console.log("Insert success!")
});
User.find({name: 'wuwei'}, function (err, data) { //查詢操作
if (err) {
console.log("find failure");
} else {
console.log("find success!");
data.forEach((item)=>console.log(item));
}
});
User.findOneAndUpdate({name:'wuwei'},{age:21},function () { //查詢並更新
console.log("Update success!")
});
User.where({name:'wuwei'}).update({$set:{age:22}},function () { //更新操作
console.log("Update success!");
mongoose.disconnect(function () { //斷開數據庫連接
console.log("Mongo is closed!")
});
});