unicloud 集合 Collection 详解及其使用示例

2024-03-08 20:44

本文主要是介绍unicloud 集合 Collection 详解及其使用示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Collection

Collection是unicloud数据的指定表集合
获取集合Collection示例如下

const db = uniCloud.database();
// 获取 `user` 集合的引用
const collection = db.collection('user');

集合 Collection

通过 db.collection(name) 可以获取指定集合的引用,在集合上可以进行以下操作

类型接口说明
add新增记录(触发请求)
计数count获取符合条件的记录条数
get获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求)
引用doc获取对该集合中指定 id 的记录的引用
查询条件where通过指定条件筛选出匹配的记录,可搭配查询指令(eq, gt, in, …)使用
-skip跳过指定数量的文档,常用于分页,传入 offset
-orderBy排序方式
-limit返回的结果集(文档数量)的限制,有默认值和上限值
-field指定需要返回的字段

查询及更新指令用于在 where 中指定字段需满足的条件,指令可通过 db.command 对象取得。

准备资料

在写collection示例前,我得先介绍一下该准备的环境,当然如果你看过前面的章节你也可以跳过这段,

一个unicloud 云数据库并且有users表
在这里插入图片描述
一个关联了这个数据库的uniapp项目
在这里插入图片描述
如果没有的话,建议看一下本专栏的其他文章

add 写

在cloudfunctions目录上右键新建addUser函数
add方法示例将在本云函数代码文件中书写

在这里插入图片描述
add 语法规则

 collection.add(data)

tips:

  • 目前云服务商为阿里云时,若集合不存在,调用add方法会自动创建集合。后续可能调整此行为,此方式创建的集合不带索引、表结构,请勿依赖此方式创建集合。
参数类型必填说明
dataobjectarray

add()函数有返回值,当插入数据一条时
返回的插入这条记录的_id
当插入多条数据时,反回的是由_id组成的数组

示例代码如下

云函数代码

'use strict';
// 获取集合的引用
const db = uniCloud.database()
exports.main = async (event, context) => {const result=await db.collection('user').add(event)//返回数据给客户端return result
};

页面代码

<template><button @click="getUniCloudData">add示例</button>
</template><script setup>const getUniCloudData=async ()=>{const result = await uniCloud.callFunction({name:'addUser',data:{name:'张三',age:38,email:'zhangshan@email.com',intro:'一个普普通通的律师'}})console.log(result)}
</script><style>
</style>

页面显示’
在这里插入图片描述
输出如下
在这里插入图片描述

查看unicloud控制台,可以看到,数据新增成功
在这里插入图片描述
新增多条数据,不需要改动云函数代码,只需要在调用时将data参数改为数组对象即可
示例代码

<template><button @click="getUniCloudData">add示例</button>
</template><script setup>const getUniCloudData=async ()=>{const result = await uniCloud.callFunction({name:'addUser',data:[{name:'ggbond',age:38,email:'ggbond@email.com',intro:'一只猪'},{name:'猪八戒',age:38,email:'zhubajie@email.com',intro:'一直吃素的猪'},{name:'佩奇',age:38,email:'peiqi@email.com',intro:'一只吹风机'},]})console.log(result)}
</script><style>
</style>

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

count 计数

count()语法规则

任何查询的集合.count()

示例代码如下
创建一个countDemo云函数并在里面书写如下代码
即查询users表内有多少条数据

'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {const result = await db.collection('users').count()return result
};

在这里插入图片描述
页面代码如下
在这里插入图片描述
输出结果如下
在这里插入图片描述

get 读

get()函数用于获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求)
这里先简单的介绍get函数,where单独篇章介绍

语法

db.collection('users').get()

示例代码如下图

云函数代码
在这里插入图片描述
页面调用云函数代码
在这里插入图片描述
示例效果如下
将所有云数据库users表内的数据都拿回来了
在这里插入图片描述

doc 引用

doc()获取对该集合中指定 id 的记录的引用
语法如下
doc不能单独使用需要搭配其他的函数使用
比如搭配get()函数,获取数据库内指定表内的_id值的数据
示例如下
获取unicloud数据库内的ggbond的数据,ggbond数据_id值为如下
在这里插入图片描述
示例代码如下

云函数代码

'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {const result = await db.collection('users').doc('65eaa82b358ba96e9f0fe233').get()return result
};

页面引用云函数代码

const getUserInfo = async _=>{const result = await uniCloud.callFunction({name:'docKeyData'})}

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

where 条件查询

where 语法太多,这里不做展开

skip 跳过

skip跳过指定数量的文档,常用于分页,传入 offset

示例如下
跳过如下数据库的前2条数据
在这里插入图片描述
示例代码如下

云函数代码

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

页面引用云函数代码

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

输出如下
可以看出,跳过了签名两条
在这里插入图片描述

orderBy 排序

orderBy排序方式

tips:

  • 排序字段存在多个重复的值时排序后的分页结果,可能会出现某条记录在上一页出现又在下一页出现的情况。这时候可以通过指定额外的排序条件比如.orderBy(“name”, “asc”).orderBy(“_id”, “asc”)来规避这种情况。

语法如下

collection.orderBy(field, orderType)
参数类型必填说明
fieldstring排序的字段
orderTypestring排序的顺序,升序(asc) 或 降序(desc)

对查询结果,按照年龄降序
示例代码如下

云函数代码

'use strict';
exports.main = async (event, context) => {const result = await uniCloud.database().collection('users').orderBy('age','desc').get()return result
};

页面引用云函数代码

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

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

limit 限制返回

limit 返回的结果集(文档数量)的限制,有默认值和上限值
语法

collection.limit(8) //不输入则默认10

限制数据库查询返回三条
示例代码如下

云函数代码

'use strict';
exports.main = async (event, context) => {const result = await uniCloud.database().collection().limit(3).get()return result
};

页面引用云函数代码

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

输出如下
在这里插入图片描述
只返回了三条

field 返回指定字段

field 从查询结果中,过滤掉不需要的字段,或者指定要返回的字段。
语法如下

collection.field()
参数类型必填说明
-object过滤字段对象,包含字段名和策略,不返回传false,返回传true

tips:

  • field内指定是否返回某字段时,不可混用true/false。即{‘a’: true, ‘b’: false}是一种错误的参数格式
  • 只有使用{ ‘_id’: false }明确指定不要返回_id时才会不返回_id字段,否则_id字段一定会返回。

查询unicloud数据库users表,只返回name字段

示例代码如下

云函数代码

'use strict';
exports.main = async (event, context) => {const result = await uniCloud.database().collection('users').field('name').get()return result
};

页面引用代码

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

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

这篇关于unicloud 集合 Collection 详解及其使用示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788343

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.