最近在用MongoDBKoa2做个小项目,记录一下:

首先,如何连接线上数据库:

const url = `mongodb://user:pwd@ipaddr:27017/Blog`;
const monk = require('monk');
const db = monk(url); db.then(() => {
console.log('MongoDB数据库连接成功!')
}) module.exports = db;

实际操作:

模糊查询

通过$regex来实现

const query = { name: { $regex: new RegExp(name) } };

获取查询出来的总数量,分页

        const count = await tagsCol.count(query);
let list = await tagsCol.find(query, {
projection: { _id: 0 },
...new ctx.MongoQuery.Pagination(page, size),
});

 MongoQuery.js

var Pagination = require('./Pagination');

function MongoQuery() { }

MongoQuery.Pagination = Pagination;

module.exports = () => async (ctx, next) => {
ctx.MongoQuery = MongoQuery;
await next();
}

字段筛选

// 0 就是不显示,1就是显示
projection: { _id: 0 },

  

整体代码如下:

const router = require('koa-router')()
const db = require('../db');
const tagsCol = db.get('tags')
router.prefix('/tags') /**
* @ / 查询列表分页
* @ /insert 新增数据
* @ /update 修改数据
* @ /drop 删除数据
* @ /all 查询所有数据
*/ router.get('/', async (ctx, next) => {
const { name, page, size } = ctx.query;
const query = { name: { $regex: new RegExp(name) } };
try {
const count = await tagsCol.count(query);
let list = await tagsCol.find(query, {
projection: { _id: 0 },
...new ctx.MongoQuery.Pagination(page, size),
});
ctx.body = new ctx.JsonResponse(200, { list, count })
} catch (e) {
ctx.body = new ctx.JsonResponse(500, {})
}
db.close();
}); router.get('/insert', async (ctx, next) => {
ctx.body = '插入成功!';
}); router.post('/update', async (ctx, next) => {
ctx.body = 'this is a users/bar response'
}); router.get('/drop', async (ctx, next) => {
const { id } = ctx.query;
try {
await tagsCol.remove({ id: Number(id) });
ctx.body = new ctx.JsonResponse(200)
} catch (e) {
ctx.body = new ctx.JsonResponse(500)
}
db.close();
}); module.exports = router

  

 

 

Mongodb入门5的更多相关文章

  1. MongoDB 入门之基础 DCL

    此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...

  2. MongoDB入门三:MongoDB shell

    MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...

  3. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  4. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

  5. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  6. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...

  7. MongoDb 入门教程

    MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...

  8. MongoDB入门必读(概念与实战并重)

    MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...

  9. mongodb入门很简单(3)

     ##简单的mongodb入门命令## 1.show dbs;      //查看当前数据库 2.use databaseName;         //选库 3.show tables/collec ...

  10. MongoDB入门实践

    MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ...

随机推荐

  1. win10彻底关闭windows defender,解决无故占用大量CPU问题

    win10彻底关闭defender的方法 首先右键开始菜单按钮,点击"运行",输入"gpedit.msc",打开"本地组策略编辑器". 依次 ...

  2. Session的默认保存路径

    在php.ini里的配置session.save_path是注释掉的,那么Seesion保存的路径在不同类型操作系统保存在什么位置? Linux:/tmp 或 /var/lib/php/session ...

  3. [oeasy]python0118_语言的发展_希腊字符_拼音文字_亚历山大大帝

    希腊字符回忆上次内容 尼罗河流域 的 埃及圣书体 是象形文字 两河流域 的 苏美尔楔形文字 不是象形文字 做生意的 腓尼基人 利用 埃及圣书体 的 字型 苏美尔楔形文字 的 写法 构造出 腓尼基字符 ...

  4. oeasy教您玩转vim - 68 - # 标签页tab

    ​ tab选项卡 回忆上次 上次有三种批量替换,分别是 :windo :bufdo :argdo 执行的{cmd}可以用|按顺序增加 分别对应的 windows 窗口 buffers 缓存文件 arg ...

  5. Nuxt.js 中使用 useHydration 实现数据水合与同步

    title: Nuxt.js 中使用 useHydration 实现数据水合与同步 date: 2024/7/18 updated: 2024/7/18 author: cmdragon excerp ...

  6. 题解:P10781 【MX-J1-T1】『FLA - III』Spectral

    本题的主要思路就是数学. 首先,让我们先来打一个表. \(i\) \(1\) \(2\) \(3\) \(4\) \(\dots\) \(T_{i}\) \(k\) \(1.5k\) \(1.5k\) ...

  7. SQL 注入漏洞详解 - Union 注入

    1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在 ...

  8. AngleScript语法

    Class的使用要继承于Interface或者Mixin class.Mixinclass实际上就是类似于抽象类 ,它已经实现的,在子类里面不能实现,类似如下代码: interface AInterf ...

  9. docker dockerfile基础指令

    dockerfile是用来构建docker镜像文件!命令参数脚本 构建步骤 1.编写一个dockerfile文件 2.dockerbuild构建成为一个镜像 3.docker run运行镜像 4.do ...

  10. 5、Git之版本号

    5.1.概述 每一次提交,Git 都会生成相关的版本号:每个版本号由 40 位 16 进制的数字组成. 这 40 位 16 进制的数字,是根据提交的内容,通过 SHA-1 算法计算出来的. 版本号具体 ...