unicloud where 使用

where介绍

在uniCloud中,WHERE是一个用于指定查询条件的关键字。它允许用户根据特定的条件来筛选和查询云数据库中的数据。WHERE语句的基本语法格式是WHERE condition,其中condition表示查询条件,可以是一个或多个逻辑表达式组成的条件。

在uniCloud的查询操作中,WHERE子句的使用非常灵活,可以支持多种查询条件,包括等于、不等于、大于、小于、范围查询等。同时,它还可以支持多个条件的组合查询,通过逻辑运算符(如AND、OR)将多个条件连接起来,实现更复杂的查询需求。

此外,WHERE子句还支持正则表达式查询,可以使用正则表达式来匹配和筛选符合特定模式的数据。这使得在处理文本数据时,能够更加精确地定位到所需的信息。

WHERE在uniCloud中是一个强大的查询工具,能够帮助用户快速、准确地获取所需的数据。无论是简单的条件查询还是复杂的组合查询,都可以通过WHERE子句来实现。

要查看本文章,请先阅读unicloud 集合 Collection 详解及其使用示例

示例教程如下

where 简单使用(查询对象)

使用where查询时,如果传入的参数是一个对象,将按照字段的值进行相等匹配,包含字段顺序。

如查看users表内年龄是38岁的人

示例代码如下

云函数代码

'use strict';
exports.main = async (event, context) => {
	const result = await uniCloud.database().collection('users').where({age:38}).get()
	//返回数据给客户端
	return result
};

页面引用代码

const where = async _=>{
	const result = await uniCloud.callFunction({name:'where'})
	console.log(result)
}

输出结果如下
可以看到,将age为38的都查询出来了

在这里插入图片描述

where 高级使用(查询指令)

查询指令以dbCmd.开头,包括等于、不等于、大于、大于等于、小于、小于等于、in、nin、and、or。

tips:

  • 以下指令挂载在 db.command 下

指令图表如下

指令描述说明
eq等于name:dbCmd.eq(‘qayrup’)
neq不等于删除字段
gt大于加一个数值,原子自增
gte大于等于乘一个数值,原子自乘
it小于数组类型字段追加尾元素,支持数组
ite小于等于数组类型字段删除尾元素,支持数组
in在数组中数组类型字段删除头元素,支持数组
nin不再数组中数组类型字段追加头元素,支持数组
and数组类型字段追加头元素,支持数组
or数组类型字段追加头元素,支持数组

eq 等于

表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array。

事实上在uniCloud的数据库中,等于有两种写法。

比如筛选名字为qayrup的

第一种写法使用对象

云函数示例代码

'use strict';
exports.main = async (event, context) => {
	const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	//返回数据给客户端
	return result
};

输出结果
在这里插入图片描述

第二种写法使用eq指令

云函数代码如下

'use strict';
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	const result = await uniCloud.database().collection().where({
		name:uniCloud.database().command.eq('qayrup')
	})
	return result
};

输出结果如下
在这里插入图片描述

neq 不等于

字段不等于。neq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array。

例如筛选出age不为38的数据

示例代码如下

'use strict';
const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	const result = await db.collection('users').where({
		age:dbCmd.neq(38)
	}).get()
	return result
};

输出结果如下

在这里插入图片描述

gt 大于

字段大于指定值。

如筛选年龄大于20的

示例代码如下

'use strict';
const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	const result = await db.collection('users').where({
		age:dbCmd.gt(20)
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

gte 大于等于

字段大于或等于指定值。

筛选年龄大于等于18的

示例代码如下

'use strict';
const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	const result = await db.collection('users').where({
		age:dbCmd.gte(18)
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

lt 小于

字段小于指定值。

筛选年龄小于20的

示例代码如下

'use strict';
const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	const result = await db.collection('users').where({
		age:dbCmd.lt(20)
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

lte 小于等于

字段小于或等于指定值。

筛选小于等于18的

示例代码如下

'use strict';
const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lt(20)
	// }).get()
	// 筛选年龄小于等于十八的
	const result = await db.collection('users').where({
		age:dbCmd.lte(18)
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

in 在数组中

字段值在给定的数组中。

'use strict';

const { setUncaughtExceptionCaptureCallback } = require("process");

const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lt(20)
	// }).get()
	// 筛选年龄小于等于十八的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lte(18)
	// }).get()
	// return result
	// 名字在['qayrup','张三','ggbond'] 内
	const result = await db.collection('users').where({
		name:dbCmd.in(['qayrup','张三','ggbond'] )
	}).get()
	return result
};

输出结果如下

在这里插入图片描述

nin 不在数组中

字段值不在给定的数组中。

名字不在[‘qayrup’,‘张三’,‘ggbond’] 内
示例代码如下

'use strict';

const { setUncaughtExceptionCaptureCallback } = require("process");

const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lt(20)
	// }).get()
	// 筛选年龄小于等于十八的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lte(18)
	// }).get()
	// return result
	// 名字在['qayrup','张三','ggbond'] 内
	// const result = await db.collection('users').where({
	// 	name:dbCmd.in(['qayrup','张三','ggbond'] )
	// }).get()
	// 名字不在['qayrup','张三','ggbond'] 内
	const result = await db.collection('users').where({
		name:dbCmd.nin(['qayrup','张三','ggbond'] )
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

and 且

表示需同时满足指定的两个或以上的条件。

筛选出 年龄大于20且小于50的

示例代码如下

'use strict';

const { setUncaughtExceptionCaptureCallback } = require("process");

const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lt(20)
	// }).get()
	// 筛选年龄小于等于十八的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lte(18)
	// }).get()
	// return result
	// 名字在['qayrup','张三','ggbond'] 内
	// const result = await db.collection('users').where({
	// 	name:dbCmd.in(['qayrup','张三','ggbond'] )
	// }).get()
	// 名字不在['qayrup','张三','ggbond'] 内
	// const result = await db.collection('users').where({
	// 	name:dbCmd.nin(['qayrup','张三','ggbond'] )
	// }).get()
	// 筛选出 年龄大于20且小于50的
	const result = await db.collection('users').where({
		age:dbCmd.gt(20).and(dbCmd.lt(50))
	}).get()
	return result
};

结果如下
在这里插入图片描述

or 或

表示需满足所有指定条件中的至少一个。

筛选 年龄等于18或年龄等38的

示例代码如下

'use strict';

const { setUncaughtExceptionCaptureCallback } = require("process");

const db = uniCloud.database()
const dbCmd = db.command
exports.main = async (event, context) => {
	// 查询字段等于某个值 第一种写法
	// const result = await uniCloud.database().collection('users').where({name:'qayrup'}).get()
	// 查询字段等于某个值 第二个写法 使用eq
	// const result = await uniCloud.database().collection('users').where({
	// 	name:uniCloud.database().command.eq('qayrup')
	// }).get()
	// 查询 age 不等于38的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.neq(38)
	// }).get()
	// 筛选年龄大于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20)
	// }).get()
	// 筛选年龄大于等于18的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gte(18)
	// }).get()
	// 筛选年龄小于20的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lt(20)
	// }).get()
	// 筛选年龄小于等于十八的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.lte(18)
	// }).get()
	// return result
	// 名字在['qayrup','张三','ggbond'] 内
	// const result = await db.collection('users').where({
	// 	name:dbCmd.in(['qayrup','张三','ggbond'] )
	// }).get()
	// 名字不在['qayrup','张三','ggbond'] 内
	// const result = await db.collection('users').where({
	// 	name:dbCmd.nin(['qayrup','张三','ggbond'] )
	// }).get()
	// 筛选出 年龄大于20且小于50的
	// const result = await db.collection('users').where({
	// 	age:dbCmd.gt(20).and(dbCmd.lt(50))
	// }).get()
	// 筛选 年龄等于18或年龄等38的
	const result = await db.collection('users').where({
		age:dbCmd.eq(18).or(dbCmd.eq(38))
	}).get()
	return result
};

输出结果如下
在这里插入图片描述

正则表达式查询

db.RegExp
根据正则表达式进行筛选

正则表达式忘得差不多了,这里就不做示例了

以上指令所示例的数据集

[{"_id":"65ea848410def2d7fe8efb6a","age":18,"email":"qayrup@aliyun.com","intro":"长得像吴彦祖","name":"qayrup"},
{"_id":"65eaa7175e058d32ec579fe7","age":38,"email":"zhangshan@email.com","intro":"一个普普通通的律师","name":"张三","uniIdToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiI2NTg4M2Y3MTZlNWQyZDcxODc5MDAxYjEiLCJyb2xlIjpbXSwicGVybWlzc2lvbiI6W10sInVuaUlkVmVyc2lvbiI6IjEuMC4xNiIsImlhdCI6MTcwMzQyNzk0NCwiZXhwIjoxNzAzNDM1MTQ0fQ.hy40ZsKGvtnm4IDA0HpOFYwhE-5x69OZXQcZ57EoTO8"},
{"_id":"65eaa82b358ba96e9f0fe233","age":38,"email":"ggbond@email.com","intro":"一只猪","name":"ggbond"},
{"_id":"65eaa82b358ba96e9f0fe234","age":38,"email":"zhubajie@email.com","intro":"一直吃素的猪","name":"猪八戒"},
{"_id":"65eaa82b358ba96e9f0fe235","age":38,"email":"peiqi@email.com","intro":"一只吹风机","name":"佩奇"}]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/440756.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第七十九天 WAF攻防-漏洞发现协议代理池GobyAWVSXray

第79天 WAF攻防-漏洞发现&协议&代理池&Goby&AWVS&Xray 知识点: 1、Http/s&Sock5协议 2、Awvs Xray&Goby代理 3、Pxoxifier进程代理使用 4、Safedog&BT&Aliyun防护 演示案例: Awws漏扫-Sadedog-白名单-内置 Awws漏…

使用Apache Kafka的Golang实践指南

您是否在寻找构建可扩展、高性能应用程序的方法,这些应用程序可以实时处理流数据?如果是的话,结合使用Apache Kafka和Golang是一个很好的选择。Golang的轻量级线程非常适合编写类似Kafka生产者和消费者的并发网络应用程序。它的内置并发原语&…

动态规划DP之背包问题3---多重背包问题

目录 DP分析: 优化: 二进制优化 例题: 01背包是每个物品只有一个,完全背包问题是每个物品有无限个。 那么多重背包问题就是 每个物品有有限个。 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体…

Mysql学习笔记之事务详解(读未提交、读以提交、可重复读、串行化读)

在这个博主的基础上,增加两种情况的对比:https://blog.csdn.net/llllllkkkkkooooo/article/details/108068919 可重复读中幻读现象(未使用MVCC) 设置可重复读的隔离级别 set global transaction isolation level repeatable read…

代码随想录算法训练营第day40|343. 整数拆分 、 96.不同的二叉搜索树

a.343. 整数拆分 题目链接 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: …

掼蛋的牌型与规律(上篇)

掼蛋是一项配合类的棋牌竞技游戏,掼蛋的最大魅力以及最集中的特点在于变化,在于组牌的变数。有的掼蛋新手往往先把牌配死,并且直接决定好出牌计划,然后守株待兔。掼蛋的取胜之道在于静态组合加上动态变化。本文主要介绍一下掼蛋的…

python基础篇--学习记录2

1.深浅拷贝 l1 ["张大仙","徐凤年",["李淳刚","邓太阿"]] # 变量名对应的就是内存地址,这里就是将l1的内存地址给了l2 # 现在两个变量指向同一个内存地址,l1变化l2也会变化 l2 l1 现在的需求是l2是l1的拷贝版本,但是两者是完全分割…

七彩虹@电脑cpu频率上不去问题@控制中心性能模式cpu频率上不去@代理服务器超时@账户同步设置失败

文章目录 windows电脑cpu频率上不去新电脑的系统时间问题系统时间不准造成的具体问题举例代理超时vscode同步请求失败自动校准时间 windows电脑cpu频率上不去 问题描述,标压处理器的笔记本,cpu频率上不去 如果cpu没问题的话,就应该是系统限制了功耗导致的有的笔记本有控制中心…

本鲸:打造科技招商新引擎、实现政企资源高效对接

在当今这个快速变化的时代,科技创新已成为推动社会进步和经济发展的核心动力。本鲸,作为科技创新创业服务的平台,正以其独特的视角和专业服务,为政府和企业提供一站式科技招商解决方案,助力构建创新驱动的经济发展新模…

b站小土堆pytorch学习记录—— P27-P29 完整的模型训练套路

文章目录 一、定义模型(放在model.py文件中)二、训练三、测试四、完整的训练和测试代码 一、定义模型(放在model.py文件中) import torch from torch import nnclass Guodong(nn.Module):def __init__(self):super(Guodong,self)…

在vue2中使用tailwindcss(完整教程)

如果你看过好多教程之后,还是报错,无法使用tailwindcss,我希望本教程可以让你成功上岸。 环境要求 node:>v14.17.0 安装tailwindcss 由于最新的tailwind css使用post css 8版本,vue2框架暂时还不支持&#xff0…

Springboot + Vue用户管理系统

Springboot Vue用户管理系统 主要实现了管理员的登录,用户管理,用户的增删改查等操作, 技术实现,前端采用Vue 后端采用Springboot ,前后端分离系统,数据库使用mysql 还用到了redis,mybatis-plus。。。。。。。。。…

10大主流压力/负载/性能测试工具推荐

在移动应用和Web服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质量,往往还需要做压力/负载/性能测试。然而很多传统企业在试水互联网的过程中,往往由于资源或产品迭代速度等原因忽视了这一块工…

【Python】科研代码学习:三 PreTrainedModel, PretrainedConfig, PreTrainedTokenizer

【Python】科研代码学习:三 PreTrainedModel, PretrainedConfig, PreTrainedTokenizer 前言Models : PreTrainedModelPreTrainedModel 中重要的方法 tensorflow & pytorch 简单对比Configuration : PretrainedConfigPretrainedConfig 中重要的方法 Tokenizer : …

influxdb2.0插入数据字段类型出现冲突问题解决

一、问题出现 一个学校换热站自控系统,会定时从换热站获取测点数据,并插入到influxdb数据库中。influxdb插入数据时,报错提示: com.influxdb.exceptions.UnprocessableEntityException: failure writing points to database: par…

组合逻辑电路(二)(译码器和编码器)

目录 译码器 简单逻辑门译码器 二进制译码器 2线-4线译码器 3线-8线译码器 二-十进制译码器 4线-10线译码器 七段显示译码器 编码器 二进制普通编码器 二-十进制普通编码器(8421BCD码编码器) 优先编码器(Priority Encoder) 译…

《解密云计算:企业之选》

前言 在当今数字化时代,企业面临着巨大的数据处理压力和信息化需求,传统的IT架构已经无法满足日益增长的业务需求。在这样的背景下,越来越多的企业开始转向云计算,以实现灵活、高效和可扩展的IT资源管理和利用。 云计算 云计算是…

【QT中如何生成导出.exe可执行文件并打包给其他人使用】

1、将QT的部署设置改成Release编译模式。 2、运行项目生成release文件夹,其中包含.exe文件。 3、新建空文件夹,将release文件夹中的.exe文件复制到里面去。(此处新建了hellofile空文件夹来存放hello.exe文件) 4、在QT终端里&#…

SpringBoot学习之自定义注解和AOP 切面统一保存操作日志(二十九)

一、定义一个注解 这个注解是用来控制是否需要保存操作日志的自定义注解(这个类似标记或者开关) package com.xu.demo.common.anotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; i…

Filter过滤器+JWT令牌实现登陆验证

一、背景 我们需要在客户端访问服务器的时候给定用户一定的操作权限,比如没有登陆时就不能进行其他操作。如果他需要进行其他操作,而在这之前他没有登陆过,服务端则需要将该请求拦截下来,这就需要用到过滤器,过滤器可以…