MongoDB基本使用

本文不想文縐縐的去分析MongoDB內部的數據存儲結構,只是想單純的從用的方面給大家一些指導,也不能說是指導,也是我最近學習,并且從實戰中總結的。

啟動和停止MongoDB

相信很多人和我這個小白一樣,剛接觸MongoDB,連打開也不會。WTF,誰叫我們水呢,只能慢慢嘗試,慢慢踩踩坑。

在安裝完Mongo之后,MongoDB 默認存儲數據目錄為/data/db/ (或者 c:\data\db), 默認端口 27017,默認 HTTP 端28017。當然也可以通過修改參數來改變默認路徑。只需要修改位置參數dbpath 參數: mongod --dbpath=/data/db。在安裝完MongoDB之后,命令行會出現啟動和配置Mongodb的一些參數。

mongo參數

這些指令包括通過 brew services start mongodb在系統啟動的時候啟動mongo,通過執行mongod --config /usr/local/etc/mongod.conf
來立即啟動mongo,這是一種通過命令配置文件啟動db的方式。主要啟動的方式有以下3種,第三種還沒嘗試出來,提供方式,有興趣的朋友可以找來告訴我一下,十分感謝。

  1. 命令行方式mongod --dbpath=/data/db,可能需要權限加上(加上sudo就好了),打開在/data/db上數據庫。
  2. 配置文件方式。mongod -f /etc/mongodb.cnf
  3. Daemon 方式啟動,即關閉終端的時候也能進行訪問mongod --dbpath=/data/db --fork,會提示你用上-logpath

停止mongo只需要按住control+c就可以停止,或者找到mongo進程,直接殺死就可以。

定義和設置mongo模型

MongoDB的邏輯結構是一種層次結構,主要由:文檔(document)、集合(collection)、數據庫(database)這三部分組成的。

  1. 文檔:是由鍵值對組成,相當于數據庫中的一行數據
  2. 集合: 多條記錄,數據庫中的表
  3. 數據庫: 多個集合

mogoose的使用

說了文章會在使用的角度來講mongodb,所以這里我們采用mogoose來定義mongo的模型。
模式為集合中文檔定義字段和字段類型。mongo支持以下幾種基本數據類型

  1. String
  2. Number
  3. Date
  4. Buffer
  5. Boolean
  6. Mixed
  7. ObjectId
  8. Array

no code no bibi,下面通過代碼給大家講解一下如何在Nodejs中簡單的使用Mongo。首先先定義模型

var mongoose = require('mongoose');
var schema = mongoose.schema;
var userSchema = new schema({ 
   username:{type:String, unique:true}, 
   password:String, 
   email:String,  
   color:String,  
   hased_password:String
}); 

然后綁定和建立數據庫的過程,下面的代碼用到了express-sessioncontect-mongo來建立持久性連接,即用戶可以通過cookie的方式來訪問網頁。

需要說明一個contect session簡單的講就是瀏覽器訪問服務器的過程。有時候,我們需要session的聲明周期要長一點,比如好多網站有個免密碼兩周內自動登錄的功能。基于這個需求,session必須尋找內存之外的存儲載體,數據庫能提供完美的解決方案。 mongodb數據庫,作為一個NoSQL數據庫,它的基礎數據對象時database-collection-document 對象模型非常直觀并易于理解, 針對node.js 也提供了豐富的驅動和API。 express框架提供了針對mongodb的中間件:connect-mongo,只需在掛載session的時候在options中傳入mongodb的參數即可,程序運行的時候,express app 會自動的替我們管理session的存儲,更新和刪除。 這樣不同的瀏覽器和ip訪問的時候就可以保存cookie了。

代碼如下

var expressSession = require('express-session');
var mongoStore = require('connect-mongo')({session: expressSession});
var mongoose = require('mongoose');
var conn = mongoose.connect('mongodb://localhost/myapp');
app.use(expressSession({
      secret: 'SECRET',
      cookie: {maxAge: 60*60*1000},
      store: new mongoStore({
      db: mongoose.connection.db,
      collection: 'sessions'
    })
  }));

解釋一下上面的代碼吧:

  1. expressSession對應一次訪問連接,
  2. mongoStore將訪問的記錄存下來。
  3. 然后建立連接。
  4. 使用中間件,每次訪問都存到數據庫中去

假總結

最近在看JavaScript全棧的書籍,今天看到了點mongo,就簡單的總結了一下mongo的使用,隨著自己做的項目規模的提升,后續會詳細的介紹mongoDB,NodeJS,當然還有ReactJS和AngularJS的東西。

學習資料

mongoose的基本使用可以參考如下地址

Mongoose學習參考文檔——基礎篇

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容