在说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