安装使用Mongoose配合Node.js操作MongoDB的基础教程


Posted in Javascript onMarch 01, 2016

安装mongoose

使用express准备一个TestMongoDB项目,命令序列如下:

express TestMongoDB
cd TestMongoDB
npm install

执行完上面的命令后,使用下面的命令安装mongoose:

npm install mongoose --save

这个命令会安装mongoose并将其作为项目的依赖,而mongoose依赖的MongoDB driver以及regexp等等模块也会被自动安装。

实例

使用mongoose可以新建数据库、新建集合、对集合内的文档进行CRUD操作,在写代码时,可以对照着mongo shell验证结果是否符合预期。

在TestMongoDB下新建一个mongo.js文件,内容如下:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/accounts');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
 console.log('mongoose opened!');
 var userSchema = new mongoose.Schema({
   name:{type: String, unique: true}, 
   password:String
  }, 
  {collection: "accounts"}
  );
 var User = mongoose.model('accounts', userSchema);

 User.findOne({name:"WangEr"}, function(err, doc){
  if(err) console.log(err);
  else console.log(doc.name + ", password - " + doc.password);
 });

 var lisi = new User({name:"LiSi", password:"123456"});
 lisi.save(function(err, doc){
  if(err)console.log(err);
  else console.log(doc.name + ' saved');
 }); 
});

上面的文件,直接执行“node mongo.js”命令即可查看效果。

要使用mongoose,先require,然后使用connect方法连接数据库。connect原型:

connect(uri, options, [callback])

uri的格式类似:“mongodb://user:pass@localhost:port/database”。

mongoose的connection对象定义了一些事件,比如connected、open、close、error等,我们可以监听这些事件。

在我们的示例代码里,我监听了open事件,在回调函数中,定义了Schema,调用mongoose.model来编译Schema得到Model对象。需要注意的是,定义Schema时指定的collection名字与mongoose.model的第一参数要保持一致。

拿到了Model对象,就可以执行增删改查等操作了。Model对象有find()、findOne()、update()、remove()等方法,和我们在mongo shell里的用法类似。这些方法都有一个可选的callback,当你提供这些callback时,执行的结果会通过这个callback返回给你。如果你不提供,这些方法会返回一个Query对象,你可以再通过Query组装新的选项,然后调用Query的exec(callback)来提交查询。

我在代码里查找WangEr的档案时用了callback,没用Query。

Model对象有个Model(doc)方法,用来构造一个文档(Document)。创建Lisi的文档时就是这种Document对象的save()方法可以将文档保存到数据库。
通过mongoose进行的基本操作:
1、增

var obj = new Movie();
obj.title = '标题一';
obj.content = '内容';
obj.save(function(err) {
  
});

2、删

Movie.remove({
  _id:id
},function (err) {
  
})

3、改

Movie.update({
  _id:id
},json,{},function (err) {
  
})

4、查

Movie.findOne({
  _id: id
}, function(err, obj) {
 
});
Movie.find({}).sort({_id: -1}).limit(3).exec(function(err, obj) {
 
})
Javascript 相关文章推荐
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
jQuery如何防止Ajax重复提交
Oct 14 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
react+antd 递归实现树状目录操作
Nov 02 Javascript
如何在JavaScript中等分数组的实现
Dec 13 Javascript
Vue实现点击当前行变色
Dec 14 Vue.js
javascript拖曳互换div的位置实现示例
Jun 28 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 #Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 #Javascript
javascript使用Promise对象实现异步编程
Mar 01 #Javascript
javascript html5实现表单验证
Mar 01 #Javascript
javascript中FOREACH数组方法使用示例
Mar 01 #Javascript
JS实现Select的option上下移动的方法
Mar 01 #Javascript
angular2使用简单介绍
Mar 01 #Javascript
You might like
第九节--绑定
2006/11/16 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
js实现动态改变字体大小代码
2014/01/02 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
JS继承用法实例分析
2015/02/05 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
js实现一个简易计算器
2020/03/30 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
财务分析个人的自荐书范文
2013/11/24 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
二年级评语大全
2014/04/23 职场文书
护士节活动总结
2014/08/29 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
运动会宣传稿50字
2015/07/23 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Python机器学习之PCA降维算法详解
2021/05/19 Python