Mongodb入门5
最近在用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的更多相关文章
- MongoDB 入门之基础 DCL
		此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ... 
- MongoDB入门三:MongoDB shell
		MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ... 
- MongoDB 入门之查询(find)
		MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ... 
- MongoDB入门简介
		MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ... 
- mongodb入门教程二
		title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ... 
- mongodb入门教程
		title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ... 
- MongoDb 入门教程
		MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ... 
- MongoDB入门必读(概念与实战并重)
		MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ... 
- mongodb入门很简单(3)
		##简单的mongodb入门命令## 1.show dbs; //查看当前数据库 2.use databaseName; //选库 3.show tables/collec ... 
- MongoDB入门实践
		MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ... 
随机推荐
- 浅谈地址,section,vstart
			地址:地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离.由于指令和变量所占内存大小不同,故他们的偏移量参差不齐.由编译器给各符号编址,编译器给程序中各符号(变量名和 ... 
- workman和swoole区别和异同
			swoole是使用C语言实现的socket通信框架,workerman则是使用纯php实现的socket框架,二者进程模型上也存在很多的不同. 先说下swoole的进程模型,看一下以下解析图 mast ... 
- Vue3中如何使用this
			vue3提供了getCurrentInstance ,通过这个属性,直接使用ctx是错误的,需要找到全局属性globalProperties import { getCurrentInstance } ... 
- Python elasticsearch-py类库基础用法
			实践环境 https://pypi.org/project/elasticsearch/ pip install elasticsearch==7.6.0 离线安装包及依赖包下载地址: https:/ ... 
- Odoo 基于Win10搭建基于Win10搭建odoo14开发环境搭建
			实践环境 win10 Python 3.6.2 odoo_14.0.latest.tar.gz 下载地址: https://download.odoocdn.com/download/14/src?p ... 
- ABC354
			A link 模拟整个过程即可. 点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; sig ... 
- 【楔子】单细胞测序-最佳的分析Pipeline
			作者:starlitnightly 日期:2023.07.14 !!! note 楔子 从事单细胞分析也有一段时间了,国内大部分中文教程都是使用R语言进行分析,使用Python的还比较少,或者是直译s ... 
- 关于SpringCloud Bus RemoteApplicationEvent 使用注意事项
			最近使用SpringCloud Bus 用于服务直接消息通信,遇到一些问题,记录下来给一样碰到问题的你一个解决方案 开发环境 : springboot 2.3.9.RELEASE spring-clo ... 
- 【Vue】使用iframe解决多应用整合问题(微前端)
			一.需求背景 有老系统需要重构,新做的系统需要做一个大一统的整合,类似一个分类栏目 在菜单位置罗列出有什么子系统应用,点击对应的应用菜单,展示区跳转到相应的子系统应用中 我用Excel简单描述了下系统 ... 
- 【Web】 通过浏览器打开本地应用程序
			首先需要编写注册表: 以Steam为例: "C:\Program Files (x86)\Steam\Steam.exe" 然后编写注册表: Windows Registry Ed ... 
