在說MongoDB
數據插入操做以前,咱們先來簡單瞭解下它的數據邏輯結構。
MongoDB的邏輯結構是一種層次結構,主要由:文檔(document)、集合(collection)、數據庫(database)
這三部分組成的。html
{a:1}
;{s:"abc"}
等,它是MongoDB核心單元,MongoDB的文檔(document),至關於關係數據庫中的一行記錄。一個MongoDB實例支持多個數據庫(database)。node
在 Ubuntu 16.04 上安裝 MongoDB 可參考 MongoDB Docs:git
$ 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 Docs:github
$ 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
var mongoose = require(「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(「——數據庫鏈接成功!——」); });
在模式裏面咱們對字段進行定義,能夠定義字段的類型mongodb
var mongoose = require('mongoose') var MovieSchema = new mongoose.Schema({ doctor.String, title: String, language: String, country: String, year: Number, summary: String })
咱們調用mongoose.model時候對傳入的Schema也就是模式進行編譯,而後生成構造函數數據庫
var mongoose = require('mongoose') var MovieSchema = require('../shemas/movie') var Movie = mongoose.model( 'movie', 'MovieSchema' ) module.export = Movie
有了數據的模型之後,要對文檔實例化,只須要調用這個模型,也就是這個構造函數,而後傳入一條數據.而後再調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) } }) })
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
$ cnpm install mongodb
與 MySQL 不一樣的是 MongoDB 會自動建立數據庫和集合,因此使用前咱們不須要手動去建立。
這裏是用https://mlab.com 建的一個mongodb數據庫,咱們能夠看到
{item: 'buy flowers'}
數據已經寫進去了
具體實現能夠看這個用 用node+express+mongodb+ejs寫的小項目todo_app
Windows 平臺安裝 MongoDB
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