详解Nodejs基于mongoose模块的增删改查的操作


Posted in NodeJs onDecember 21, 2016

MongoDB

MongoDB是基于Javascript语言的数据库,存储格式是JSON,而Node也是基于JavaScript的环境(库),所以node和mongoDB的搭配能减少因为数据转换带来的时间空间开销。

Mongoose

是MongoDB的一个对象模型工具,它将数据库中的数据转换为JavaScript对象以供你在应用中使用,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。

安装模块mongoose

npm install mongoose

[注意] mongoose模块依赖mongodb

npm常用命令

npm install <name> -g 将包安装到全局环境中

npm install <name> ?-save 安装的同时,将信息写入package.json中,便于后期维护查看

npm remove <name>移除

npm update <name>更新

npm root -g 查看全局的包安装路径 

npm -v 查看npm的版本

开启mongodb数据库

进入mongod所在目录 执行命令 ./mongod --dbpath=存放数据的位置

例1:./mongod --dbpath=../data/dbname

例2:./mongod --dbpath=../data/dbname --port 自定义端口号,默认27017(了解即可,不推荐使用,修改默认端口号后期维护麻烦)

插入数据

// 引入模块
var mongoose = require('mongoose');
// 连接数据库
var db = mongoose.createConnection('mongodb://127.0.0.1:27017/test');
// 设置数据类型
var monSchema = new mongooose.Schema({
 name:{type:String,default:"username"},
 age:{type:Number},
 sex:{type:String}
});
// 选择集合
var monModel = db.model('user',monSchema);
// 数据集
var content = {name:"Nick",age:23,sex:'男'};
// 实例化对象并插入数据
var monInsert = new monModel(content);
monInsert.save(function(err){
 if(err){
 console.log(err);
 }else{
 console.log('成功插入数据');
 }
 db.close();
});

删除数据

// 引入模块
var mongoose = require('mongoose');
// 连接数据库
var db = mongoose.createConnection('mongodb://127.0.0.1:27017/test');
// 设置数据类型
var monSchema = new mongooose.Schema({
 name:{type:String,default:"name"},
 age:{type:Number},
 sex:{type:String}
});
// 选择集合
var monModel = db.model('user',monSchema);
// 要删除的条件
var del = {name:"Nick"};

monModel.remove(del,function(err,result){
 if(err){
 console.log(err);
 }else{
 console.log("update");
 }
 db.close();
});

修改数据

// 引入模块
var mongoose = require('mongoose');
// 连接数据库
var db = mongoose.createConnection('mongodb://127.0.0.1:27017/test');
// cosole.log(db);
// 设置数据类型
var monSchema = new mongooose.Schema({
 name:{type:String,default:"name"},
 age:{type:Number},
 sex:{type:String}
});
// 选择集合
var monModel = db.model('user',monSchema);
// 原数据字段值
var oldValue = {name:"Nick"};
// 单条件更新
var newData1 = {$set:{name:"内容"}};
// 多条件更新
var newData2 = {$set:{name:"内容",age:2}};
monModel.update(oldValue,newData,function(err,result){
 if(err){
 console.log(err);
 }else{
 console.log("update");
 }
 db.close();
});

查询数据

// 引入模块
var mongoose = require('mongoose');
// 连接数据库
var db = mongoose.createConnection('mongodb://127.0.0.1:27017/test');
// cosole.log(db);
// 设置数据类型
var monSchema = new mongooose.Schema({
 name:{type:String,default:"name"},
 age:{type:Number},
 sex:{type:String}
});
// 选择集合
var monModel = db.model('user',monSchema);
var content = {name:"姓名2"};
var field = {name:1,age:1,sex:1};
monModel.find(content,field,function(err,result){
 if(err){
 console.log(err);
 }else{
 console.log(result);
 }
 db.close();
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodeJS微信分享
Dec 20 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 #NodeJs
解析NodeJs的调试方法
Dec 11 #NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 #NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 #NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 #NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 #NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 #NodeJs
You might like
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
构建Python包的五个简单准则简介
2015/06/15 Python
python flask中静态文件的管理方法
2018/03/20 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python代码如何注释
2020/06/01 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
护士毕业自我鉴定
2014/02/07 职场文书
给校长的建议书600字
2014/05/15 职场文书
大学活动总结模板
2014/07/10 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
个人原因辞职信模板
2015/05/13 职场文书
护士心得体会范文
2016/01/25 职场文书