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()// 查询字段等于某个值 第二个写法 使用eqconst 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":"佩奇"}]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据库将DMHR模式下的表(迁移)导出为EXCEL文件

数据库迁移工具(Data Transfer Service)位于/dm8/tool/dts.其中/dm8是数据库安装目录。 在创建数据库时我们如果勾选了 “创建示例库DMHR(R)”,数据库实例中就带有这个数据库。 这里是用MobaXterm客户端远程控制ip地址为192.168.148.130的虚…

【C++】C++11---右值引用和移动语义

目录 1、什么是左值引用和右值引用2、左值引用与右值引用比较3、右值引用使用场景和意义4、右值引用引用左值的分析5、完美转发 1、什么是左值引用和右值引用 传统的C语法中就有引用的语法,而C11中新增了的右值引用语法特性,所以从现在开始我们之前学习…

Xilinx 7系列 FPGA硬件知识系列(九)——FPGA的配置

目录 1 .1配置模式 1.1.1 主模式 1.1.2 从模式 1.2 7种配置模式 1.2.1 主串配置模式 1.2.2 从串配置模式 ​编辑1.2.3 主并配置模式 1.2.4 从并配置模式 1.2.5 JTAG配置模式 ​编辑1.2.6 主SPI配置模式 ​编辑1.2.7 主BPI配置模式 1.2.8 FPGA BPI加载时间…

详解float函数类型转换

函数描述 float([x]) 函数将数字或数字的字符串表示形式转换为与它等效的有符号浮点数。如果参数x是一个字符串(十进制表示的数字串),数字前面可以添加符号来表示正数,或负数。符号和数字之间不能出现空格,但是符号前…

【Linux基础(三)】信号

学习分享 1、信号的基本概念2、查看信号列表3、常见信号名称4、signal库函数5、发送信号kill6、kill - signal (无参信号)示例6.1、kill - signal (不可靠信号)示例6.2、kill - signal (可靠信号)示例 7、信号分类7.1、信号运行原理分类7.2、信号是否携带…

java-抢红包一些简单概念

抢红包,比如微信中抢红包,红包金额分配使用的是二倍均值算法。 二倍均值拆包: 拆包要求:所有人抢到的金额之和等于红包总额,每个人最少抢到 0.01 元,每个人抢到的红包金额不要相差太大二倍均值法:假设红包总金额是X&…

【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

3DES算法的起源与演进:保障信息安全的重要里程碑

title: 3DES算法的起源与演进:保障信息安全的重要里程碑 date: 2024/3/8 21:25:19 updated: 2024/3/8 21:25:19 tags: 3DES算法起源安全性增强三次迭代加密密钥管理复杂效率对比AES应用场景广泛Python实现示例 一、3DES算法的起源与演进 3DES算法是DES算法的增强版…

Linux第72步_使用“新字符设备的一般模板”编写LED驱动

使用“新字符设备的一般模板”编写LED驱动,使用寄存器直接开关灯。 1、创建LED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/” 输入“ls回车”,查看“/home/zgq/linux/Linux_Drivers/” 输入“mkdi…

IDEA自带 .http 请求工具文档

基础语法 请求格式 基础格式 Method Request-URI HTTP-Version Header-field: Header-valueRequest-Body其中,GET 请求可以省略 Method 不写;HTTP-Version 可以省略不写,默认使用 1.1 版本。 示例: GET https://www.baidu.co…

【LaTeX】行内代码块、行间代码块的插入以及高亮(懒人版)

文章目录 思路和优点基本框架行内代码行间代码pythoncpp 所支持的语言所支持的代码风格 思路和优点 思路是listingsminted包, 一个负责插入代码一个负责高亮代码 这种方法显著的优点在于:完全不需要自定义代码风格 使用其他方法时,你定义好…

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

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

httprunner参数化

1. 示例 引入对应的Parameters 1.1. CSV参数 from httprunner import HttpRunner, Config, Step, RunRequest, Parameters pytest.mark.parametrize("param", Parameters({"mobile_phone-pwd": "${P(csv_data/mobile_phone-pwd.csv)}"}))def …

【粉丝福利】探秘内部审计数字化之道:精准解析转型方法与成功路径

🌼前言 内部审计是一种独立的、客观的确认和咨询活动,包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储,据此再对数据进行挖掘、分析和应…

基于textdistance计算文本相似度

textdistance是Python的第三方库,用于计算文本之间的相似度或距离。它提供了30个算法,简单易用。 安装 pip install textdistance# 使用扩展库,提高性能 pip install "textdistance[extras]"使用 import textdistance# 计算编辑…

多目标跟踪中的数据关联

多目标追踪之数据关联多目标跟踪数据关联算法比较 在单目标无杂波环境下,目标的相关波门内只有一个点迹,此时只涉及跟踪问题。 在多目标情况下,有可能出现单个点迹落入多个波门的相交区域内,或者多个点迹落入单个目标的相关波门内…

本鲸多方位助力创业者高效对接创新创业机遇

在科技创新的浪潮中,创业者们不断探索着新的商业机会,寻求着创新创业的道路。然而,面对复杂多变的市场环境和激烈的竞争压力,如何高效对接创新创业机遇成为了摆在创业者面前的重要课题。 本鲸依托海南本鲸投资有限公司和重庆本鲸…

007-双向绑定原理

双向绑定原理 双向绑定思考:一句话描述原理DocuemntFragment(碎片化文档)Object.defineProperty(数据劫持)发布订阅者模式Vue 双向绑定图示Vue 双向绑定完整实现代码 双向绑定 vue中 data定义的数据会添加双向绑定的功…

照片坐标 | 使用EXCEL批量读取照片GPS坐标并标注拍摄地图

一 前言 7、8月是旅游的季节,旅途过程我们经常使用手机拍摄记录美好的瞬间,整个旅途使用手机拍摄已成为用户高频的出行习惯,无论是小孩、年轻人、老年人,只要手机在手,都会频频举起手机进行拍摄,贯穿整个旅…

网工内推 | 网络工程师,IE认证优先,最高15K,有项目绩效奖金

01 重庆并联网络科技有限公司 招聘岗位:网络工程师 职责描述: 1、负责集成项目的相关实施工作(设备上架安装、网络设备配置、服务器相关系统配置安装、相关软件环境搭建及配置等) 2、负责项目现场技术维护与技术支持;…