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中的几个运算符
Jun 29 Javascript
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
JavaScript基础之this详解
Jun 04 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
详解vue中移动端自适应方案
May 05 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排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
python 读取DICOM头文件的实例
2018/05/07 Python
python爬取微信公众号文章
2018/08/31 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
校园活动策划书范文
2014/01/10 职场文书
员工薪酬福利制度
2014/01/17 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
关于召开会议的通知
2015/04/15 职场文书