mongoose - 让node.js高效操作mongodb-阿里云开发者社区

开发者社区> 文艺小青年> 正文

mongoose - 让node.js高效操作mongodb

简介:
+关注继续查看

Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。

当然要使用的话,必须要先安装好环境Node.js与MongoDB =》 MongoDB安装

MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了

MongoDB中有三个基本的概念区别于RDBMS

  1. 数据库:数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。
  2. 集合:集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的
  3. 文档:文档是一组键 - 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

下面给出的表显示RDBMS术语使用 MongoDB 的关系

image

观察下最重要的一点就是我们关系数据库中的表与字段被合集与文档的概念给替代了,Mongo不在具有主键的关系了,数据保存都是放在文档中用JSON风格键值对风格的文件形式存放

详细了解可以异步  MongoDB资料汇总专题


Mongoose中的操作流程

1. 连接数据库

var mongoose = require("mongoose");

// 连接字符串格式为mongodb://主机/数据库名
mongoose.connect('mongodb://localhost/test');

这里没太多好解释的,安装mongoose后,引入模块连接到本地的mongodb的test表,这里要注意了,mongo数据库是运行状态

 

 

2. 存储数据

复制代码
var Schema = mongoose.Schema;
//骨架模版
var movieSchema = new Schema({
    doctor   : String,
    title    : String,
    language : String,
    country  : String,
    year     : Number,
    summary  : String,
    poster   : String,
    flash    : String
})
//模型
var Movie = mongoose.model('Movie', movieSchema);
//存储数据
var moive = new Movie({
    title: '黑衣人三',
    doctor: '史密斯',
    year: 2018,
    flash: 'http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf',
    country: '美国',
    language: '英语',
    summary: '好片'
})
//保存数据库
moive.save(function(err) {
    if (err) {
        console.log('保存失败')
        return;
    }
    console.log('meow');
});
复制代码

以上是最简单的数据操作了

流程就是:通过Schema创建一个模式movieSchema ,通过模式movieSchema创建一个模型Movie,通过模型Movie写入数据,通过save方法保存

定义schema->创建model->实例化方法

表 –》 合集 –》 文档

这里涉及几个名词概念Schema与Model

 

3.Schema与Model

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

虽然模式(Schema)在MongoDB的存储中并不是必须的,但是一般来说为了文档的整齐一致我们在Mongoose中还是会用到模式。可以说,Mongoose中的一切都从定义模式开

不像传统的关系型数据库一样,比如mysql,连接好数据后直接有把sql语句丢到一个指定的方法中就执行了,这里会有Schema的抽象概念

Schema它类似于关系数据库的表结构,可以理解为数据库模型骨架

Schema可以看作工厂中模具一样,好比一个茶杯,喝水是茶杯最终的功能,茶杯本身就像是Model,那么茶杯的批量生产是需要靠工厂的模具成型的,这就像是Schema了

Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子

 

4. CURD操作

Model可以看到关系型数据库中的表,那么通过new Model出来的实例document文档对应的则是关系数据库中表的一行记录

document有许多内置的实例方法. 可以直接执行增删改查操作

增加数据

复制代码
//模型
var Movie = mongoose.model('Movie', movieSchema); 
var moive = new Movie({
    title: '黑衣人三',
    doctor: '史密斯',
    year: 2018,
    flash: 'http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf',
    country: '美国',
    language: '英语',
    summary: '好片'
})
//保存数据库
moive.save(function(err) {
    if (err) {
        console.log('保存失败')
        return;
    }
    console.log('meow');
});
复制代码

在这里我们通过对模型Movie实例化生成了一个叫moive的文档,并使用save方法将它存储到了集合

 

修改数据

复制代码
User.update({_id: oneUser._id}, {
    $set: {name: oneUser.name,password:oneUser.password}
}, function(err) {
    if(err){
        console.log(err)
        return
    }
    console.log('更新成功')
});
复制代码

更新的数据比较少用$set,可用性还是很好

 

删除数据

复制代码
User.remove({
    _id: id
}, function(err) {
    if (err) {
        console.log(err)
        return
    }
    console.log('删除成功')
});
复制代码

 

简单的数据库的连接,跑通了整个流程,具体的可以查看API

Mongoose API : http://mongoosejs.com/docs/api.html

附上git上mongoose的一个简单的测试案例

https://github.com/JsAaron/node_movie/tree/master/data

支持增加、修改、删除数据

image

win平台安装:

1. 首先要安装好MongoDB安装

2. 进入目录,通过npm install 安装模块依赖、grunt、mongoose、express、jade

3. 执行命令grunt,自动检测文件改动重启服务

4. 打开http://localhost:3000/即可

本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/p/4489354.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
node-mysql操作transactions的实例
关于mysql的事务,可查看上一篇文章未尾>> 先更新一条数据 UPDATE user_info SET userName = 'kk' WHERE userId = 1;SELECT * FROM user_info   现在的数据   写一个事务,只选中前面的语句执行:   SET AUTOCOMMIT=0;START TRANSACTION;SELECT * FROM user_info FOR UPDATE;COMMIT; 如果使用node.js执行,控制台上会看到待执行的sql处于等待状态:  上面报错,是因为超时了。
802 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2865 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10638 0
第12章—使用NoSQL数据库—使用MongoDB+Jpa操作数据库
使用MongoDB+Jpa操作数据库 SpringData还提供了对多种NoSQL数据库的支持,包括MongoDB;neo4j和redis.他不仅支持自动化的repository,还支持基于模板的数据访问和映射注解.
1292 0
MongoDB系列 | 集合的基本操作
1:简介 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的。 由于关系型数据库存储对数据之间存在高度的关联,在数据量达到上万亿比特时,关系型数据库所特有的约束和关联就会成为性能瓶颈。非关系型数据库采用了另一种思维方式,即不考虑数据之间千丝万缕的联系,存储也不需要固定的模式,这样无需多余的操作就能成倍地扩展数据量。 MongoDB 支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型,比如:
21 0
Node.js使用mongodb操作MongoDB数据库
Node.js使用mongodb操作MongoDB数据库
35 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载