安装使用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 相关文章推荐
javascript编程起步(第四课)
Feb 27 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
Sep 29 Javascript
javascript之bind使用介绍
Oct 09 Javascript
设置checkbox为只读(readOnly)的两种方式
Oct 11 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
Jun 07 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
Aug 16 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
jQuery Migrate 插件用法实例详解
May 22 jQuery
Vue调用后端java接口的实例代码
Oct 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
php 面向对象的一个例子
2011/04/12 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
JS原生实现轮播图的几种方法
2021/03/23 Javascript
大学自我鉴定
2013/12/20 职场文书
留学推荐信范文
2014/05/10 职场文书
养牛场项目建议书
2014/05/13 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
2014年保育员工作总结
2014/12/02 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
文案策划岗位职责
2015/02/11 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Python中第三方库Faker的使用详解
2022/04/02 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js