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的一些操做命令

相关文章
相关标签/搜索