mongoose学习笔记
Posted 追风逐月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoose学习笔记相关的知识,希望对你有一定的参考价值。
一、为什么使用mongoose
1、避开连接mongo经常要 db.open()和db.close(),数据库操作频繁就会出现
Error: db object already connecting, open cannot be called multiple times
用mongoose就不会出现这错误勒,因为一旦连接好数据库,db就会处于open状态,不存在访问时要打开,然后又要关闭的规则
2、Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似于ORM工具
二、mongoose的使用
1、mongoose连接
const mongoose = require(‘mongoose‘); var db=mongoose.createConnection(‘mongodb://39.104.166.99:27017/runoob‘); db.on(‘error‘, console.error.bind(console, ‘connection error:‘)); db.once(‘open‘, function () { console.log(‘mongo is open‘) // we‘re connected! });
2、创建集合
var Schema = mongoose.Schema; var userObj = new Schema({ name: { type: String, index: { unique: true } }, nick: String, password: String, email: String, submit: Number, solved: Number, regTime: String, privilege: String }); //注册静态方法 findByName userObj.static(‘findByName‘, function (name, callback) { return this.find({ name: name }, callback); }) // 创建users集合 var users = db.model(‘users‘, userObj);
3、插入数据
var user = { name: ‘zhouba‘, nick: ‘周八‘, password: ‘123456‘, email: ‘[email protected]‘, submit: 1, solved: 1, regTime: ‘String‘, privilege: ‘String‘ } //创建用户 var createUser = new users(user); createUser.save((err, doc) => { if (err) console.log(‘err:‘ + err); console.log(doc); }) // or users.create(user, (err, doc) => { if (err) console.log(‘err:‘ + err); console.log(doc); })
4、修改数据
//修改 users.update({ name: ‘zhouba‘ }, { submit: 2 }, (err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); }) //批量修改 { multi: true } users.update({ name: ‘zhouba‘ }, { nick: ‘粥吧‘ }, { multi: true },(err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); })
5、删除数据
//删除删除所有符合条件的文档 users.remove({ submit: 1 }, (err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); //{ ok: 1, n: 1 } }) //最多删除一个文件符合条件的文档 users.deleteOne({ name: ‘Eddard Stark‘ }, function (err) { }); //最多删除所有符合条件的文档,表现的像remove users.deleteMany({ name: /Stark/, submit: { $gte: 18 } }, function (err) { });
6、查找数据
//查找 users.find({ name: ‘zhouba‘ }, (err, docs) => { if (err) console.log(‘err:‘ + err); console.log(docs); }) //where 条件 .where(‘age‘).gte(21).lte(65).where(‘name‘, /^b/i) users.where(‘submit‘).gte(2).exec((err, docs)=> { if (err) console.log(‘err:‘ + err); console.log(‘docs:‘ + docs); })
7、其他
//Query var query = users.find(); //查询 query.exec(function (err, docs) { if (err) console.log(‘err:‘ + err); console.log(docs); }) //or use promise var promise = query.exec(); promise.then(function (resolve, reject) { if (reject) console.log(‘err:‘ + reject); console.log(resolve); }) //findById mongoose自带 users.findById(‘5ae45b6258d8122414f5498b‘, function (err, docs) { if (err) console.log(‘err:‘ + err); console.log(docs); }) //此方法为创建model时注册的静态方法 users.findByName(‘wangwu‘, (err, docs) => { if (err) console.log(‘err:‘ + err); console.log(docs); })
更过mongoose API: http://mongoosejs.com/docs/api.html
以上是关于mongoose学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段
javascript [猫鼬片段]猫鼬#mongoose的提示
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段