资讯专栏INFORMATION COLUMN

Node学习记录: mongodb

zzzmh / 1179人阅读

摘要:的逻辑结构是一种层次结构,主要由文档集合数据库这三部分组成的。文档由键值对构成,像等,它是核心单元,的文档,相当于关系数据库中的一行记录。我们以此为例看它如何使用真实项目中参考学习笔记之的使用入门教程的一些操作命令

简介

在说MongoDB数据插入操作之前,我们先来简单了解下它的数据逻辑结构。
MongoDB的逻辑结构是一种层次结构,主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。

文档(document):由键/值对构成,像{a:1}{s:"abc"}等,它是MongoDB核心单元,MongoDB的文档(document),相当于关系数据库中的一行记录。

集合(Collection):多个文档组成一个集合(collection),相当于关系数据库的表。

数据库(database):多个集合(collection),逻辑上组织在一起,就是数据库(database)。

一个MongoDB实例支持多个数据库(database)。

模式

模型

文档

快速安装 安装 MongoDB

在 Ubuntu 16.04 上安装 MongoDB 可参考 MongoDB Docs:

$ 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:

$ 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进行建模操作

安装及引用 安装
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-模式定义

在模式里面我们对字段进行定义,可以定义字段的类型

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能把这条数据存储到数据库里面去

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

var movie = new Movie(){
 title: "机械战警",
 doctor: "何塞.帕蒂利亚",
 year: 2018
}

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

数据库的查询

数据库的查询分为批量的,单条的,或者特定条件的查询

数据库批量查询:

只需要调用模型的find方法

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18998.html

相关文章

  • 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三

    摘要:将就用一下,能实现相同的功能就可以了。的方法可以从返回最大值,但是新版中的不行,只能通过这样的方式返回最大值。 前篇 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(一)使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(二) 原文第十三步,Express API路由 第一个路由是用来创建角...

    JessYanCoding 评论0 收藏0
  • Node.js学习之路01——不同操作系统下Node.js环境搭建

    摘要:基本介绍这是一个基本的环境搭建不同的操作系统可以选择不同的安装方式如果不需要太多的安装步骤就直接在官网下载最新版安装包进行安装即可环境配置必须安装的软件更改源与更新系统首先备份下载的源配置文件运行生成缓存更新系统安装使用安装命 基本介绍 这是一个基本的Node.js环境搭建,不同的操作系统可以选择不同的安装方式 如果不需要太多的安装步骤,就直接在Node.js官网下载最新版安装包进行...

    meteor199 评论0 收藏0
  • node 学习笔记 (2)

    摘要:除了定义数据结构,还可以设定默认值,处理输入,以及加强校验添加任务搜索文档更新文档 创建一个http 服务器 showImg(https://segmentfault.com/img/bVWNvM?w=922&h=163); 服务器 响应方式 showImg(https://segmentfault.com/img/bVWNwI?w=902&h=168); showImg(https...

    高璐 评论0 收藏0

发表评论

0条评论

zzzmh

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<