mongoose - 讓node.js高效操作mongodb

來源:互聯網
上載者:User

標籤:

Mongoose庫簡而言之就是在node環境中操作MongoDB資料庫的一種便捷的封裝,一種物件模型工具,類似ORM,Mongoose將資料庫中的資料轉換為JavaScript對象以供你在應用中使用。

當然要使用的話,必須要先安裝好環境Node.js與MongoDB =》 MongoDB安裝

MongoDB是目前最流行的noSQL資料庫之一,它是專為node.js而開發的,理解下與我們常用的RDBMS關係型資料庫的區別就可以基本使用了

MongoDB中有三個基本的概念區別於RDBMS

  1. 資料庫:資料庫是一個物理容器集合。每個資料庫都有自己的一套檔案系統上的檔案。一個單一的MongoDB伺服器通常有多個資料庫。
  2. 集合:集合是一組MongoDB的文檔。它相當於一個RDBMS表。收集存在於一個單一的資料庫。集合不執行模式。集合內的文檔可以有不同的領域。通常情況下,一個集合中的所有檔案是相同或相關的目的
  3. 文檔:文檔是一組鍵 - 值對。檔案動態模式。動態模式是指,在相同集合中的文檔不需要具有相同的欄位或結構組的公用欄位的集合的文檔,可以容納不同類型的資料。

下面給出的表顯示RDBMS術語使用 MongoDB 的關係

觀察下最重要的一點就是我們關聯式資料庫中的表與欄位被合集與文檔的概念給替代了,Mongo不在具有主鍵的關係了,資料儲存都是放在文檔中用JSON風格索引值對風格的檔案形式存放

詳細瞭解可以非同步  MongoDB資料匯總專題

Mongoose中的操作流程

1. 串連資料庫

var mongoose = require("mongoose");// 連接字串格式為mongodb://主機/資料庫名mongoose.connect(‘mongodb://localhost/test‘);

這裡沒太多好解釋的,安裝mongoose後,引入模組串連到本地的mongodb的test表,這裡要注意了,mongo資料庫是運行狀態

 

 

2. 儲存資料

var Schema = mongoose.Schema;//骨架模版var movieSchema = new Schema({    doctor   : String,    title    : String,    language : String,    country  : String,    year     : Number,    summary  : String,    poster   : String,    flash    : String})//模型var Movie = mongoose.model(‘Movie‘, movieSchema);//儲存資料var moive = new Movie({    title: ‘黑衣人三‘,    doctor: ‘史密斯‘,    year: 2018,    flash: ‘http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf‘,    country: ‘美國‘,    language: ‘英語‘,    summary: ‘好片‘})//儲存資料庫moive.save(function(err) {    if (err) {        console.log(‘儲存失敗‘)        return;    }    console.log(‘meow‘);});

以上是最簡單的資料操作了

流程就是:通過Schema建立一個模式movieSchema ,通過模式movieSchema建立一個模型Movie,通過模型Movie寫入資料,通過save方法儲存

定義schema->建立model->執行個體化方法

表 –》 合集 –》 文檔

這裡涉及幾個名詞概念Schema與Model

 

3.Schema與Model

  • Schema : 一種以檔案形式儲存的資料庫模型骨架,不具備資料庫的操作能力
  • Model : 由Schema發布產生的模型,具有抽象屬性和行為的資料庫操作對

雖然模式(Schema)在MongoDB的儲存中並不是必須的,但是一般來說為了文檔的整齊一致我們在Mongoose中還是會用到模式。可以說,Mongoose中的一切都從定義模式開

不像傳統的關係型資料庫一樣,比如mysql,串連好資料後直接有把sql語句丟到一個指定的方法中就執行了,這裡會有Schema的抽象概念

Schema它類似於關聯式資料庫的表結構,可以理解為資料庫模型骨架

Schema可以看作工廠中模具一樣,好比一個茶杯,喝水是茶杯最終的功能,茶杯本身就像是Model,那麼茶杯的批量生產是需要靠工廠的模具成型的,這就像是Schema了

Schema不僅定義了文檔結構和使用效能,還可以有擴充外掛程式、執行個體方法、靜態方法、複合索引、文檔生命週期鉤子

 

4. CURD操作

Model可以看到關係型資料庫中的表,那麼通過new Model出來的執行個體document文檔對應的則是關聯式資料庫中表的一行記錄

document有許多內建的執行個體方法. 可以直接執行增刪改查操作

增加資料

//模型
var Movie = mongoose.model(‘Movie‘, movieSchema); 
var moive = new Movie({    title: ‘黑衣人三‘,    doctor: ‘史密斯‘,    year: 2018,    flash: ‘http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf‘,    country: ‘美國‘,    language: ‘英語‘,    summary: ‘好片‘})//儲存資料庫moive.save(function(err) {    if (err) {        console.log(‘儲存失敗‘)        return;    }    console.log(‘meow‘);});

在這裡我們通過對模型Movie執行個體化產生了一個叫moive的文檔,並使用save方法將它儲存到了集合

 

修改資料

User.update({_id: oneUser._id}, {    $set: {name: oneUser.name,password:oneUser.password}}, function(err) {    if(err){        console.log(err)        return    }    console.log(‘更新成功‘)});

更新的資料比較少用$set,可用性還是很好

 

刪除資料

User.remove({    _id: id}, function(err) {    if (err) {        console.log(err)        return    }    console.log(‘刪除成功‘)});

 

簡單的資料庫的串連,跑通了整個流程,具體的可以查看API

Mongoose API : http://mongoosejs.com/docs/api.html

附上git上mongoose的一個簡單的測試案例

https://github.com/JsAaron/node_movie/tree/master/data

支援增加、修改、刪除資料

win平台安裝:

1. 首先要安裝好MongoDB安裝

2. 進入目錄,通過npm install 安裝模組依賴、grunt、mongoose、express、jade

3. 執行命令grunt,自動檢測檔案改動重啟服務

4. 開啟http://localhost:3000/即可

mongoose - 讓node.js高效操作mongodb

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.