Node學習記錄: mongodb

圖片描述

簡介

在說MongoDB數據插入操做以前,咱們先來簡單瞭解下它的數據邏輯結構。
MongoDB的邏輯結構是一種層次結構,主要由:文檔(document)、集合(collection)、數據庫(database)這三部分組成的。html

  • 文檔(document):由鍵/值對構成,像{a:1}{s:"abc"}等,它是MongoDB核心單元,MongoDB的文檔(document),至關於關係數據庫中的一行記錄。
  • 集合(Collection):多個文檔組成一個集合(collection),至關於關係數據庫的表。
  • 數據庫(database):多個集合(collection),邏輯上組織在一塊兒,就是數據庫(database)。

一個MongoDB實例支持多個數據庫(database)。node

圖片描述

  • 模式
  • 模型
  • 文檔

快速安裝

安裝 MongoDB

在 Ubuntu 16.04 上安裝 MongoDB 可參考 MongoDB Docsgit

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

在 CentOS 7 上安裝 MongoDB 可參考 MongoDB Docsgithub

$ sudo vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
$ sudo yum install -y mongodb-org

工具模塊

Mongoose 它能對Mongodb進行建模操做redis

安裝及引用

安裝

npm install mongoose

引用mongoose

var mongoose = require(「mongoose」);

使用mongoose連接數據庫

var db = mongoose(「mongodb://user:pass@localhost:port/database」);

示例

var mongoose = require(「mongoose」); 
var db = mongoose.connect(「mongodb://127.0.0.1:27017/test」); 
db.connection.on(「error」, function (error) { 
console.log(「數據庫鏈接失敗:」 + error); 
}); 
db.connection.on(「open」, function () { 
console.log(「——數據庫鏈接成功!——」); 
});

Schema-模式定義

在模式裏面咱們對字段進行定義,能夠定義字段的類型mongodb

var mongoose = require('mongoose')

var MovieSchema = new mongoose.Schema({
  doctor.String,
  title: String,
  language: String,
  country: String,
  year: Number,
  summary: String
})

Model - 編譯模型

咱們調用mongoose.model時候對傳入的Schema也就是模式進行編譯,而後生成構造函數數據庫

var mongoose = require('mongoose')
var MovieSchema = require('../shemas/movie')

var Movie = mongoose.model(
  'movie',
  'MovieSchema'
)

module.export = Movie

Documents - 文檔實例化

有了數據的模型之後,要對文檔實例化,只須要調用這個模型,也就是這個構造函數,而後傳入一條數據.而後再調save方法jiu能把這條數據存儲到數據庫裏面去express

var Movie = require('./models/movie')

var movie = new Movie(){
 title: '機械戰警',
 doctor: '何塞.帕蒂利亞',
 year: 2018
}

movie.save(function (err) {
  if (err) return handleError(err)
})

數據庫的查詢

數據庫的查詢分爲批量的,單條的,或者特定條件的查詢npm

數據庫批量查詢:

只須要調用模型的find方法ubuntu

var Movie = require('./models/movie')

app.get('/', function(req, res) {
 Movie
   .find({})
   .exec(function(err, movies) {
     res.render('index', {
       title: 'jx_movie首頁',
       movies: movies
     })
   })
})

數據庫單條查詢

var Movie = require('./models/movie')

app.get('/', function(req, res) {
 Movie
   .findOne({_id: id})
   .exec(function(err, movies) {
     res.render('index', {
       title: 'jx_movie首頁',
       movies: movies
     })
   })
})

數據庫單條刪除

var Movie = require('./models/movie')

app.get('/', function(req, res) {
 Movie
   .remove({_id: id}, function (err, movie) {
     if(err) {
       console.log(err)
     }
   })
   
})

MongoDB基礎

  • Schema : 一種以文件形式存儲的數據庫模型骨架,不具有數據庫的操做能力
  • Model : 由Schema發佈生成的模型,具備抽象屬性和行爲的數據庫操做對
  • Entity :由Model建立的實體,他的操做也會影響數據庫

詳解

Schema —— 一種以文件形式存儲的數據庫模型骨架,沒法直接通往數據庫端,也就是說它不具有對數據庫的操做能力,僅僅只是數據庫模型在程序片斷中的一種表現,能夠說是數據屬性模型(傳統意義的表結構),又或着是「集合」的模型骨架。

var mongoose = require("mongoose")
var TestSchema = new mongoose.Schema({
    name : {type:String},
    age : {type:Number,default:0},
    time : {type:Date,default:Date.now},
    emial : {type:String,default:''}
});
 // 基本屬性類型有:字符串、日期型、數值型、布爾型(Boolean)、null、數組、內嵌文檔等

Model —— 由Schema構造生成的模型,除了Schema定義的數據庫骨架之外,還具備數據庫操做的行爲,相似於管理數據庫屬性、行爲的類。

var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
// 經過Schema建立Model
var TestModel = db.model("test1", TestSchema);

Entity —— 由Model建立的實體,使用save方法保存數據,Model和Entity都有能影響數據庫的操做,但Model比Entity更具操做性。

var TestEntity = new TestModel({
    name : "Lenka",
    age : 36,
    email : "lenka@qq.com"
});
console.log(TestEntity.name); // Lenka
console.log(TestEntity.age); // 36

示例

Node.js 鏈接 MongoDB

$ cnpm install mongodb

與 MySQL 不一樣的是 MongoDB 會自動建立數據庫和集合,因此使用前咱們不須要手動去建立。

插入數據

圖片描述

圖片描述圖片描述

這裏是用https://mlab.com 建的一個mongodb數據庫,咱們能夠看到

{item: 'buy flowers'}

數據已經寫進去了
具體實現能夠看這個用 用node+express+mongodb+ejs寫的小項目todo_app
Windows 平臺安裝 MongoDB

Redis 安裝

egg-mongoose

egg-mongooseegg.js中操做mogodb的插件。咱們以此爲例看它如何使用:
圖片描述
圖片描述
真實項目中:

app/model/user.js

圖片描述

config/config.default.js

圖片描述

config/plugin.js

圖片描述

參考

MongoDB學習筆記之Mongoose的使用
MongoDB入門
教程
https://mlab.com/
Intro to NoSQL / MongoDB

mongoose的一些操做命令

相關文章
相關標籤/搜索