mongoose-面向对象操作mongodb的Nodejs框架
介绍
无论是mysql还是mongodb,传统的与数据库交互的方式都是按照他们提供的API来写代码。它们提供的API往往不是很容易理解,而且难以记忆,如果传错了参数,写错一个符号都要查文档。
ORM(对象关系映射,Object Relational Mapping)框架,允许我们面向对象操作,不需要记忆任何的数据库API,只需要操作对象即可,由框架底层去调用数据库API,这样就大大提高了程序员的开发效率。
不过既然多了一层封装,肯定要损失一点点的性能,可以忽略不计。
在NodeJS中,操作mongodb最好的ORM框架就是mongoose。
安装mongoose
npm install mongoose --save
如果你本机没有安装nodejs驱动,会自动安装nodejs驱动,因为mongoose依赖nodejs驱动。
文档参考:mongoose官方文档:http://mongoosejs.com/docs/index.html
连接数据库
'use strict'let User = require('./model/user');let mongoose = require('mongoose');mongoose.connect("mongodb://127.0.0.1/test");
let db = mongoose.connection;// 监听错误的事件db.on('error', err => { console.log(err);});
db.once('open', () => { console.log('mongodb connect successfully!'); highOrderQuery()});
模型定义
mongoose
使用schema
来描述数据的格式、字段、规则,有了schema
之后可以生成model
来操作数据。
一般我们新建一个model目录来存放这些模型文件,比如这里我们新建一个model/user.js
'use strict'let mongoose = require('mongoose');let schema = mongoose.Schema({ name: String, age: Number, address: String, fav: [String]}, { versionKey: false});
module.exports = mongoose.model("users", schema);
增删改查
直接查看文档中Model相关API。
async function testCRUD() { //增 let arr = [ { name: "李连杰", age: 50, address: "北京", fav: ["功夫", "演电影", "旅游"] }, { name: "吴京", age: 48, address: "北京", fav: ["功夫", "演电视剧", "运动"] }, ]; let res = await User.create(arr); console.log(res);
//查 let res = await User.findOne({address: "北京"}); //查询出符合条件的第一个文档 console.log(res); let res = await User.find({address: "北京"}); // 查询出符合条件的所有文档 console.log(res);
//改 let res = await User.updateOne({_id: "5b4065e548651d0b7035843d"}, {age: 11, address: "深圳"}); console.log(res);
//删 let res = await User.deleteOne({_id: "5b4065e548651d0b7035843d"}); console.log(res);}
高级查询
所有条件操作符:https://docs.mongodb.com/manual/reference/operator/query/
。
async function highOrderQuery() { //条件查询 let res = await User.find({age: {$gt: 15}});
//数组查询 let res = await User.find({ fav: "玩游戏" });
//分页查询 // sort({age:1}) : 1(默认)是从小到大,-1是从大到小 // sort("-age") :可以直接写`-`,表示从大到小 // select("")只选择某个或某几个字段;select("-fav")不选某个字段 let res = await User.find().skip(0).limit(2).sort("-age").select("-fav");
console.log(res);}
参考
黑马程序员 120天全栈区块链开发 开源教程
https://github.com/itheima1/BlockChain
一番雾语:操作mongodb最好的NodeJS框架。
免费知识星球:一番码客-积累交流 微信公众号:一番码客 微信:Efon-fighting 网站:http://www.efonmark.com |
mongoose-面向对象操作mongodb的Nodejs框架相关推荐
- 使用第三方包mongoose来操作MongoDB数据库,解决报错:MongooseError
使用第三方包mongoose来操作MongoDB数据库 官方网站 配置文件 异常 异常描述: MongooseError: Operation cats.insertOne() buffering t ...
- mongoose操作mongodb
http://mongoosejs.com/docs/api.html#index-js mongoose是nodejs环境下操作mongodb的模块封装,使用mongoose之后,实际上只需要在mo ...
- Nodejs 操作 MongoDb 数据库
一.在 Nodejs 中使用 Mongodb 在前面的博文我们给大家讲了如何使用命令操作 Mongodb,这篇博文开始我们给大家讲解一 下如何使用 Nodejs 来操作 Mongodb 数据库 Nod ...
- 使用mongoose 在 Node中操作MongoDB数据库
MongoDB 关系型和非关系型数据库 关系型数据库(表就是关系,或者说表与表之间存在关系). 所有的关系型数据库都需要通过sql语言来操作 所有的关系型数据库在操作之前都需要设计表结构 而且数据表还 ...
- node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库
下载安装 MongoDB image.png 直接点击下载就行了 image.png 安装 mongodb 一直点击下一步,知道这一步 image.png 选中自己选择想安装的目录路径(选择安装的目录 ...
- nodejs操作mongodb数据库(mongoose)
准备 在上一篇的基础上,通过npm安装mongoose. 关于mongoose Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB n ...
- MONGOOSE – 让NODE.JS高效操作MONGODB(转载)
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- Node.js使用mongoose操作mongodb
软件配置: 1.node v8.9.3 2. npm 5.5.1 3. mongoose及MongoDB版本见下package.json // package.json { "name& ...
- Mongoose使用操作
一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据库的接口. 连接数据库 // mongoose 链接 var mongoose = requ ...
最新文章
- 面霸篇:高频 Java 基础问题(核心卷一)
- leetcode : Reverse Linked List II [two pointers]
- shutil python_shutil模块
- 大数据数据量估算_如何估算数据科学项目的数据收集成本
- python正则表达式怎么表示零个或多个字符_VBA中正则表达式之分组
- Outlook 2003解除附件下载限制
- linux c select函数返回值,linux c中select使用技巧
- Android音视频系列(七):PCM音频单声道与双声道的相互转换
- 开始使用Mac OS X——写给Mac新人
- jQuery-对联广告
- 家里的垃圾移动光猫和tp路由器设置
- 回收站的东西怎么恢复?mac电脑回收站清空还能恢复吗?
- [转] 能不吃最好别吃:一个食品专业本科生的自白
- git 解决冲突后提交 fatal: cannot do a partial commit during a merge.
- 继明哥的否定之后,java泰又出新作!明哥接码!
- 光纤收发器的原理及应用_光纤收发器知识讲解(一)
- kali安装水泽,进行简单换源
- R极简教程-10:R语言绘图基础
- 【SLAM学习】ORB-SLAM2-大体框架(OpenVSLAM)
- python 爬虫(cookie)
热门文章
- CSS3 Media Queries 详细介绍与使用方法,Responsive Web Design 必备技术, 响应式设计
- Linux查看与修改时区、时间的命令
- 怎样在 Ubuntu 13.04 Raring Ringtail , 12.10, 12.04 中安装和设置 Samba 实现网上邻居共享...
- Objective-C 2.0 with Cocoa Foundation --- 2,从Hello,World!开始
- golang安装grpc,timeout问题
- JAVA——实现json bean实体类的传参校验模板及注解详解
- Java—List集合详解
- django-静态文件设置
- 记AELF区块链网络的一次内存持续增长问题排查
- 本地上传图片无法预览