详解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 相关文章推荐
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs aes 加解密实例
Oct 10 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
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
javascript实现yield的方法
2013/11/06 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
北大研究生linux应用求职信
2013/10/29 职场文书
社区端午节活动方案
2014/01/28 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
售房协议书
2014/08/19 职场文书
法定授权委托证明书
2014/09/27 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
协议书范文
2015/01/27 职场文书
行政司机岗位职责
2015/04/10 职场文书
文艺晚会开场白
2015/05/29 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书