Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】


Posted in Javascript onMay 13, 2020

本文实例讲述了Node Mongoose用法。分享给大家供大家参考,具体如下:

Mongoose简介

是一个将JavaScript对象与数据库产生关系的一个框架,Object related model。操作对象,就是操作数据库了。对象产生了,同时也持久化(数据进入数据库)了。

初步使用Mongoose

连接数据库

var mongoose = require('mongoose');

//创建数据库连接
var db = mongoose.createConnection('mongodb://localhost:27017/zf');

//监听open事件
db.once('open',function ( callback ) {
  
  console.log('数据库成功连接');
  
});

module.exports = db;

定义模型

创造schema -> 定义在schema上的scatic方法 -> 创造模型

new mongoose.schema({}); //参数是json,定义字段。

创建模型 db.model(collectionsName,schemaName);

var mongoose = require('mongoose');
var db = require('./db.js');

//创建一个schema结构。 schema--模式
var StudentSchema = new mongoose.Schema({
  name: {type: String, default: '匿名用户'},
  age: { type: Number },
  sex: { type: String }
});
// 创建方法
StudentSchema.statics.zhaoren = function ( name,callback ) {
  this.model('Student').find({'name': name},callback);
}

//创建修改方法
StudentSchema.statics.xiugai = function ( conditions,update,options,callback ) {
  this.model('Student').update(conditions,update,options,callback);
}
var studentModel = db.model('Student',StudentSchema);
module.exports = studentModel;

app.js 中只操作类,不操作数据库。

var Cat = mongoose.model('Cat'{'name': String, age: Number});
Cat.find({'name': 'tom'},function( err.reslut ){
  var xiaomao = reslut[0]; 
  //小猫这个变量是一个Cat的实例,它是从Cat集合中find出来的,所以find出来以后,就是Cat的一个实例。 //不但创建的是猫的实例, find查询出来的也是猫的实例。
  xiaomao.age = 10;
  xiaomao.save();
})

Schema

定义文档结构支持的类型

String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array

定义对象(methods)方法

实例出来的对象,使用的方法, 实例来调用。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mlln');
var db = mongoose.connection;

db.on('open',function ( callback ) {
  console.log('数据库成功打开');
});

var animalSchema = new mongoose.Schema({
  'name': String,
  'type': String
});


animalSchema.methods.zhaotonglei = function ( cb ) {
  this.model('Animal').find({'type': this.type},cb);
}

var Animal = mongoose.model('Animal',animalSchema);
 
//module.exports = Blog;

/*Animal.create({'name': '汤姆','type': '猫'});
Animal.create({'name': 'imim','type': '猫'});
Animal.create({'name': '小白','type': '狗'});
Animal.create({'name': '加菲猫','type': '猫'});
Animal.create({'name': 'snoopy','type': '狗'});
*/

//blog.save();

Animal.findOne({'name': 'imim'},function ( err,reslut ) {
  var dog = reslut;
  dog.zhaotonglei(function ( err,resluts ) {
    console.log( resluts );
  });
});

model文档操作

构造函数

构造函数, 参数1:集合名称, 参数2:Schema实例

db.model(“test1”, TestSchema );

查询

查询, 参数1忽略,或为空对象则返回所有集合文档

model.find({}, callback);
model.find({},field,callback);
//过滤查询,参数2: {‘name':1, ‘age':0} 查询文档的返回结果包含name , 不包含age.(_id默认是1)
model.find({},null,{limit:20});
//过滤查询,参数3: 游标操作 limit限制返回结果数量为20个,如不足20个则返回所有.
model.findOne({}, callback);
//查询找到的第一个文档
model.findById(‘obj._id', callback);
//查询找到的第一个文档,同上. 但是只接受 __id 的值查询

创建

创建, 在集合中创建一个文档

Model.create(文档数据, callback))

更新

更新,参数1: 查询条件, 参数2: 更新对象,可以使用MondoDB的更新修改器

Model.update(conditions, update, function(error)

删除

删除, 参数1: 查询条件

Model.remove(conditions,callback);

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
Javascript学习笔记9 prototype封装继承
Jan 11 Javascript
js 刷新页面的代码小结 推荐
Apr 02 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
Apr 15 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
简单实现js选项卡切换效果
Feb 03 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
相册展示PhotoSwipe.js插件实现
Aug 25 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 #Javascript
Node 模块原理与用法详解
May 13 #Javascript
JavaScript oncopy事件用法实例解析
May 13 #Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 #Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 #Javascript
Node.js API详解之 module模块用法实例分析
May 13 #Javascript
JS如何实现手机端输入验证码效果
May 13 #Javascript
You might like
PHP的SQL注入过程分析
2012/01/06 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
跟老齐学Python之一个免费的实验室
2014/09/14 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
python保存网页图片到本地的方法
2018/07/24 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python实现代码统计器
2019/09/19 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
python程序输出无内容的解决方式
2020/04/09 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
信用卡工资证明范本
2014/10/17 职场文书
2014年班级工作总结
2014/11/14 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
学校捐书倡议书
2015/04/27 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android