安装使用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 相关文章推荐
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
javasript实现密码的隐藏与显示
May 08 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
简述Angular 5 快速入门
Nov 04 Javascript
微信小程序实现打卡日历功能
Sep 21 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
webpack proxy 使用(代理的使用)
Jan 10 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
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
python中cPickle用法例子分享
2014/01/03 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
python的mysqldb安装步骤详解
2017/08/14 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
应用化学专业职业生涯规划书
2014/01/22 职场文书
入党自荐书范文
2014/03/09 职场文书
质量负责人任命书
2014/06/06 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android