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 相关文章推荐
Add Formatted Text to a Word Document
Jun 15 Javascript
javascript:json数据的页面绑定示例代码
Jan 26 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
Sep 01 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
Jun 24 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
Javascript实现运算符重载详解
Apr 07 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
javascript实现简单打字游戏
Oct 29 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python爬取网页转换为PDF文件
2018/06/07 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
信息科学与技术专业求职信范文
2014/02/20 职场文书
中国入世承诺
2014/04/01 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
python3操作redis实现List列表实例
2021/08/04 Python
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏