首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Koa入门(四)Koa 操作数据库

首先需要说是,NoSql 并不表示 NO SQL 没有 SQL 意思。实际,它是 Not Only SQL 缩写。...它意义是:适用关系型数据库时候就使用关系型数据库,不适时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适数据存储。...关系型数据库中表都是存储一些结构化数据,每条记录字段组成都一样,即使不是每条记录都需要所有的字段,但数据库会为每条数据分配所有的字段。...,使用 postman 测试如下: 增加: 获取列表: 获取某人: 删除某人: 更新用户信息: 4.3 优化逻辑 我们在操作数据库前一定要判断数据正确性,例如增加要判断是否已有重名,修改要判断是否有这个用户...列表使用模糊搜索,一个正则搞定cosnt { q = '' } = ctx.query await User.find({ name: new RegExp(q) // 模糊搜索 })如果多个字段搜索呢

2.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

Nodejs学习笔记(十四)— Mongoose介绍和入门

模块来操作来提升开发效率   下面我们一步步来了解mongoose基本操作^_^!...options], [callback])         Model.findOneAndRemove(conditions, [options], [callback]) 条件查询   已先插入一些测试数据...console.log("Res:" + res); } }) } getByConditions();   结果我就不展示了   第2个参数可以设置要查询输出字段...  $nin           不在多个值范围内   $all            匹配数组中多个值   $regex  正则,用于模糊查询   $size   匹配数组大小   $maxDistance...  范围查询,距离(基于LBS)   $mod     取模运算   $near   邻域查询,查询附近位置(基于LBS)   $exists    字段是否存在   $elemMatch  匹配内数组内元素

2.6K60

【GraphQL】225-GraphQL真香入门教程

GraphQL 既是一种用于 API 查询语言也是一个满足你数据查询运行时。...获取多个资源,只用一个请求; 典型 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需所有数据。...自定义类型查询 我们前面的查询中,已经将 hero 字段定义为 String 类型,但是常常开发中,我们又会碰到字段多个类型,即字段也能指代对象类型(Object),比如一个 user 字段会有 name...然后模拟创建一个本地数据库 localDb, 用于模拟存放添加超级英雄数据: const localDb = {} 接下来声明 root 实现 schema 中字段方法: const root =...input) localDb[id] = update return update } } //...省略其他 现在我们可以启动服务器,在 GraphiQL 测试下效果了

8.1K21

GraphQL真香入门教程

GraphQL 既是一种用于 API 查询语言也是一个满足你数据查询运行时。...获取多个资源,只用一个请求; 典型 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需所有数据。...自定义类型查询 我们前面的查询中,已经将 hero 字段定义为 String 类型,但是常常开发中,我们又会碰到字段多个类型,即字段也能指代对象类型(Object),比如一个 user 字段会有 name...然后模拟创建一个本地数据库 localDb, 用于模拟存放添加超级英雄数据: const localDb = {} 接下来声明 root 实现 schema 中字段方法: const root =...input) localDb[id] = update return update } } //...省略其他 现在我们可以启动服务器,在 GraphiQL 测试下效果了

7.1K30

Mongoose 实现关联查询和踩坑记录

本文源自工作中一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外其它字段,在网上搜索时这块解决方案也并不是很多,在经过一番查阅、测试之后...引用模型是一种规范化数据模型,通过主外键方式来关联多个文档之间引用关系,减少了数据冗余,在使用这种数据模型中就要用到关联查询,也就是本文我们要讲解重点。...图片来源:mongoing[1] 引用模型示例 JSON 模型 我们通过作者和书籍关系,一个作者对应多个书籍这样一个简单示例来学习如何在 MongoDB 中实现关联非 _id 查询。..._id 字段,并且在 populate 方法里无法更改,但是在 Mongoose 4.5.0 之后增加了虚拟值填充[3],以便实现文档中更复杂一些关系。...另外一种是 Mongoose 提供 populate 方法,这种方式写起来,代码会更简洁些,这里需要注意如果关联字段是非 _id 字段,一定要在 Schema 中设置虚拟值填充,否则 populate

26.4K20

你真的了解mongoose吗?

find() 第一个参数表示查询条件,第二个参数用于控制返回字段,第三个参数用于配置查询参数,第四个参数是回调函数,回调函数形式为function(err,docs){} Model.find(conditions...在 mongoose 中有两种指定方式,字符串指定和对象形式指定。 字符串指定时在排除字段前加 - 号,只写字段是包含。...没有符合查询条件数据,result 返回 null。 更新 每个模型都有自己更新方法,用于修改数据库中文档,不将它们返回到您应用程序。...each修饰 push 和 addToSet 操作符,以便为数组字段添加多个元素。...Answer.findById(ctx.params.id) .select(selectFields) .populate("answerer", "name -_id"); populate 多个字段

41.4K30

MongoDB增删改查操作

创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数实例即可创建集合。...实际在数据库中产生集合名为courses 2.创建文档 创建文档实际就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下save方法将数据保存到数据库中。...> {    console.log(result); }); ​ // 删除多个 如果条件为空,默认删除所有文档 返回一个对象,n代表删除文档数,OK表示是否删除成功 User.deleteMany...}).then(result => console.log(result)) // 更新多个 User.updateMany({查询条件}, {要更改值}).then(result => console.log...验证 在创建集合规则时,可以设置当前字段验证规则,验证失败则插入失败。

6.5K20

MongoDB数据库基本操作

('User', userSchema); // 查询用户集合中所有文档 User.find().then(result => console.log(result)); // 通过_id字段查找文档...({hobbies: {$in: ['足球']}}).then(result => console.log(result)) // 选择要查询字段 // User.find().select('name...deleteMany 多个 第一个条件为空 默认更新所有(慎用) // 引入mongoose第三方模块 用来操作数据库 const mongoose = require('mongoose'); //...('User', userSchema); // 查找到一条文档并且删除 // 返回删除文档 // 如何查询条件匹配了多个文档 那么将会删除第一个匹配文档 // User.findOneAndDelete...updateMany 多个 第一个条件为空 默认更新所有 // 引入mongoose第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接

4.2K10

MongoDB

= require('mongoose'); let db=mongoose.connect('mongodb://localhost/tenDB', {useNewUrlParser: true}...; //创建集合 /* * 语法:new mongoose.Schema() * 参数一:对象, 设置该集合里所需要域 * 参数二:对象, 指定集合名字,如果没有...: SQLite 数据库组成 1.一个数据库系统管理着多个数据库 2.一个数据库中可以存放多张表 3.每张表都有字段(比如姓名, 年龄) 4.表中会有一个特殊字段(主键), 用于保证数据唯一性...根据多个条件进行查找 select * from 表名 where 字段1 = 值1 and 字段2 = 值2 例如: select * from student where name = ‘you’...7.根据多个条件中某个条件, 进行查找 select * from student where 字段1 = 值1 or 字段2 = 值2 例如: select * from student where

2.6K30

MongoDB增删改查操作

1.创建集合 创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数实例即可创建集合。...实际在数据库中产生集合名为courses 1.创建文档 创建文档实际就是向集合中插入数据。 方法1 分为两步: ①创建集合实例。 ②调用实例对象下save方法将数据保存到数据库中。...> { console.log(result); }); ​ // 删除多个 如果条件为空,默认删除所有文档 返回一个对象,n代表删除文档数,OK表示是否删除成功 User.deleteMany...}).then(result => console.log(result)) // 更新多个 User.updateMany({查询条件}, {要更改值}).then(result => console.log...验证 在创建集合规则时,可以设置当前字段验证规则,验证失败则插入失败。

6.2K10

mogoose 创建数据库并增删改查

下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); const db =...是否必须 是否重复 默认值 等,如下定义了一个用户表结构 注意:如果定义表结构时没有定义_id,mongoose会自己添加一个该字段,该字段不会重复,类型为ObjectId,通过findById()查询...添加`createdAt updatedAt`创建时间和更新时间两个字段 } ); 如果在定义了结构后需要添加新字段,在实例使用add()方法 创建表model 通过mongoose.model...: 创建表数据实例化model 通过传入具体数据来实例化表,能获得一条具体表数据,类型为Mongoose Documents,向数据库中查找到也是这种类型数据 const user = new User...方法: 通过表构造器静态方法create自动在表中插入新数据 该方法可以接收多个插入数据,最后回调函数参数根据数据量决定 该方法支持两种调用: 错误优先回调 async await const

5.1K30

大数据技术之_22_MongoDB学习_MongoDB 简介、下载、安装、启动、配置和关闭 + MongoDB 基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

3.5 文档增删改查 插入文档   db.collection.insert();   insert() 可以用于向集合中添加一个或多个文档,可以传递一个对象,或一个数组。   ...(升序) //sort() 可以用来指定文档排序规则,sort() 需要传递一个对象来指定排序规则,1 表示升序显示该字段数据;-1 表示降序显示该字段数据,0 表示不显示该字段数据。...并且可以对 connection 对象一些事件进行监听,来获悉数据库连接开始与端开。比如,可以通过 open 和 close 事件来监控连接打开和关闭。...4.5 Schema--模式对象(约束对象)   使用 Mongoose 你必须经常定义模式。   模式为集合中文档定义字段字段类型。   .../utils/conn_mongo"); 2、定义一个模块,用于定义具体模型对象 第一种方式: student.js var mongoose = require("mongoose"); var Schema

17.7K30

GraphQL 基础实践

那么,上面的这个请求描述称为一个 GraphQL 请求体,请求体即用来描述你要从服务器取什么数据用。一般请求体由几个部分组成,从里到外了解一下。 首先是字段字段请求是一个数据单元。...也就是说,请求体结构也确定了最终返回数据结构。 GraphQL Server 在前面的 REST 举例中,我们请求多个资源有多个 API 端点。...由于该接口中字段是所有实现了该接口类型所共有的,在请求体可以直接使用。...而对于特定类型其他非共有字段,例如Video中performers,直接选取是会有问题,因为searchMedia在返回数据中类型可能是所有实现了该接口类型,而在 Song类型中就没有performers...Resolver 对应着 Schema 字段,当请求体查询某个字段时,对应 Resolver 函数会被执行,由 Resolver 函数负责到数据库中取得数据并返回,最终将请求体中指定字段返回。

12.8K20

初试MongoDB学习之Mongoose使用

mongoose简介 mongoose官网:https://mongoosejs.com/ #为什么要用Mongoose Mongoose就是一个让我们可以通过Node来操作MongoDB一个模块。...Mongoose本质是一个对象文档模型(ODM)库, 他对Node原生MongoDB模块进行了一部优化封装,并且提供了更多功能。...Node原生MongoDB驱动更容易 #使用Mongoose 下载安装mongoose模块 cnpm install mongoose --save 引用mongoose: var mongoose...}) #mongoose基本使用 #mongoose几个新对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...#定义一个Schema(表/ 模式对象) //新建Schema 定义规则/字段规则 let Schema= mongoose.Schema; //定义personSchema字段(规则)需要new一下

5.9K20
领券