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框架的更多相关文章
- nodeJS中使用mongoose模块操作mongodb数据库
在实际运用中,对于数据库的操作我们不可能一直在cmd命令行中进行操作,一般情况下需要在node环境中来操作mongodb数据库,这时就需要引入mongoose模块来对数据库进行增删改查等操作. 首先, ...
- mongoose之操作mongoDB数据库
mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下: 1.安装 npm install mongoose ...
- Node.js使用Mongoose包操作MongoDB数据库
1. 安装Mongoose npm install mongoose 2. 使用 2.1 创建连接 var mongoose = require('mongoose'); mongoose.conne ...
- MongoDB_简介_安装_基本使用_js_mongoose 操作 MongoDB 编程
数据库 按照数据结构来组织.存储和管理数据的仓库 程序运行时,数据存储于内存中,一旦程序结束或者断电,就会数据丢失 为了将有些数据持久化存储到硬盘中,并确保可操作性和安全性,就需要数据库 分类: 关系 ...
- nodejs 使用mongoose 操作mongodb
nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...
- nodejs+mongoose操作mongodb副本集实例
继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目 express 项目名称 2:npm install mongoose 安装mongo ...
- mongodb学习(3)--- NodeJs使用mongoose操作mongodb
转载: https://cnodejs.org/topic/50c145ed637ffa4155c7eaee 首先对于以下错误说明(有写 db.close): Error: db object alr ...
- Nodejs学习笔记(二)--- 操作MongoDB数据库
最近看了一些关于mongodb的文章,然后就想知道nodeJS是怎么连接的所以我就尝试去了解了一波(这个菜鸟驿站这个网站还不错,虽然知识文档不是最新的,但是还是蛮好的: 顺便官网地址是这个哦:http ...
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
随机推荐
- 把Java代码转成c#可用的dll
1.首先你需要到 IKVM官网 下载IKVM.http://sourceforge.net/projects/ikvm/files/,需要注意的是如果你用的是.net framework2.0,那么最 ...
- [LC] 520. Detect Capital
Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...
- sklearn包源码分析(一)--neighbors
python如何查看内置函数的用法及其源码? 在anaconda的安装目录下,有一块会放着我们安装的所有包,在里面可以找到所有的包 找到scikit learn包,进入 这里面又有了多个子包,每个子包 ...
- POJ2352 Stars [树状数组模板]
题意:输入一n颗星星的x,y坐标,给定判断level的标准,即某颗星星左下边(不高于它,不超过他,相当于以他为基准的第三象限)星星的数目为level, 输出level从0到n的星星个数. //poj2 ...
- HTTP-web服务器接收到client请求后的处理过程(很详细)
1. 客户发起情况到服务器网卡: 2. 服务器网卡接受到请求后转交给内核处理: 3. 内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程 4. Web服务器进程根据用户请求,向内核进 ...
- centos 7 下iptables参数详解
在红帽RHEL7系统中firewalld服务取代了iptables服务,如果我们不想用或者不习惯使用firewalld服务,请看下面的操作: iptables命令中则常见的控制类型有: ACCEPT: ...
- 第一课 安装wamp环境
1.准备 怎样选择PHP的版本 IIS 如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP Apache 如果你是用的Apache的版本来自Apache ...
- [LC] 55. Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- JavaScript小数转百分比
在浏览器的控制台操作0.28*100会得到28.000000000000004这样一个不太精确的值 进行转换 toPercent(point){ let str = Number(point * 10 ...
- .net core && python
最近.net core的发展,确实值得激动,强力推荐传教文章<.NET:持续进化的统一开发平台>http://www.cnblogs.com/wer-ltm/p/8776846.html ...
