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限定复选框的选择个数示例代码
Aug 25 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
关于删除时的提示处理(确定删除吗)
Nov 03 Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 Javascript
常用jQuery选择器汇总
Feb 02 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
浅谈关于angularJs中使用$.ajax的注意点
Aug 12 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
简述JS控制台的使用
Jul 15 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
JavaScript实现简单动态表格
Dec 02 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
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
python计算日期之间的放假日期
2018/06/05 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
旅游项目合作意向书
2015/05/08 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers