微信小程序:SDK数据库 Command·索引
在微信小程序云开发的数据库操作中,db.command 对象中也包含用于处理索引的一些指令。索引在数据库中是用于提高查询性能的重要工具,它能够加速某些特定的查询操作。以下是一些与索引相关的 db.command 指令的示例:1. 创建索引:const db = wx.cloud.database();const collection = db.collection('example');// 创建单字段索引collection.createIndex({ index: { field: 'fieldName', direction: 'desc' // 可选,索引方向,'asc' 表示升序,'desc' 表示降序 }}).then(res => { console.log(res);}).catch(err => { console.error(err);});在上述示例中,使用 createIndex 方法创建单字段索引,可以指定索引的字段和方向。2. 删除索引:const db = wx.cloud.database();const collecti...
微信小程序:SDK数据库 Command
在微信小程序云开发的数据库操作中,db.command 是一个对象,用于生成数据库操作指令(Command)。这些指令可以用于执行特定的数据库操作,例如更新、删除等。以下是一些常见的使用示例:1. 更新操作:const db = wx.cloud.database();const collection = db.collection('example');// 更新操作collection.doc('docId').update({ data: { field: db.command.inc(1) // 将 field 字段增加 1 }}).then(res => { console.log(res);}).catch(err => { console.error(err);});在上述示例中,使用 db.command.inc(1) 表示将指定字段的值增加 1。其他常见的更新指令还包括 db.command.set、db.command.remove 等。2. 删除操作:const db = wx.cloud.database();const collect...
微信小程序:SDK数据库 Transaction
在微信小程序云开发中,事务(Transaction)是一种用于确保多个操作的原子性的机制。通过事务,你可以在一个事务内执行多个数据库操作,并且在整个事务中,要么所有操作都成功执行,要么所有操作都不执行,保持数据的一致性。以下是一个简单的使用事务的示例:const db = wx.cloud.database();const collection = db.collection('example');// 开始事务db.startTransaction() .then(async transaction => { try { // 在事务中执行多个操作 await transaction.collection('example').add({ data: { name: 'Transaction Example 1' } }); await transaction.collection('example').add({ data: { name: 'Tran...
微信小程序:SDK数据库 Geo
在微信小程序云开发中,Geo 是用于处理地理位置数据的一个重要功能。通过 Geo,你可以在小程序中存储和查询地理位置信息,实现一些基于地理位置的功能,比如附近的人、地点搜索等。以下是一些常见的 Geo 相关操作:1. 创建地理位置数据:const db = wx.cloud.database();const collection = db.collection('locations');collection.add({ data: { name: 'Location 1', location: new db.Geo.Point(30.12345, 120.67890) }}).then(res => { console.log(res);}).catch(err => { console.error(err);});在上述示例中,使用 db.Geo.Point 创建一个地理位置点,然后将其存储到数据库中。2. 查询附近的地理位置:const db = wx.cloud.database();const collection = db.collection...
微信小程序:SDK数据库 Aggregate·发起实际聚合操作
在微信小程序云开发的数据库聚合操作中,当你定义好了一系列聚合阶段(例如 $match、$project、$sort 等)后,可以使用 .end() 方法来发起实际的聚合操作,并在 .then 方法中处理聚合操作的结果。以下是一个基本的实际聚合操作的示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 发起实际聚合操作collection.aggregate() .match({ status: 'published', category: 'news' }) .project({ title: '$title', author: '$author', customField: '$yourFieldName' }) .sort({ createTime: -1 }) .limit(10) .end() .then(res => { console.log(res); // 在这里处理聚合操作的结...
微信小程序:SDK数据库 Aggregate·返回排序后结果
在微信小程序云开发的数据库聚合操作中,如果你想要返回排序后的结果,可以在 $sort 阶段之后继续执行其他的聚合阶段,或者直接使用 .end() 方法来结束聚合操作。以下是一个基本的返回排序后结果的示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 返回排序后结果collection.aggregate() .sort({ fieldName: 1 // 升序排序 // fieldName: -1 // 降序排序 }) .end() .then(res => { console.log(res); // 在这里可以处理排序后的结果 }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .sort 方法进行排序操作,之后使用 .end() 方法结束聚合操作。在 .then 中,你可以处理排序后...
微信小程序:SDK数据库 Aggregate·文档排序
在微信小程序云开发的数据库聚合操作中,你可以使用 $sort 阶段对文档进行排序。 $sort 阶段用于按照指定的字段对文档进行升序或降序排序。以下是一个基本的 $sort 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 文档排序collection.aggregate() .sort({ fieldName: 1 // 升序排序 // fieldName: -1 // 降序排序 }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .sort 方法进行排序操作。在排序操作中,fieldName: 1 表示按照 fieldName 字段进行升序排序,而 fieldName: -1 则表示按照 fie...
微信小程序:SDK数据库 Aggregate·跳过指定数的文档
在微信小程序云开发的数据库聚合操作中,如果你想要跳过指定数量的文档,可以使用 $skip 阶段。 $skip 阶段用于跳过集合中的指定数量的文档,然后返回剩余的文档。以下是一个基本的 $skip 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 跳过指定数量的文档collection.aggregate() .skip(10) // 跳过前面 10 条记录 .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .skip 方法进行跳过操作。在跳过操作中,skip(10) 表示跳过前面 10 条记录。你可以根据实际业务需求修改和扩展示例中的跳过记录方式。需要注意的是,$skip 在处理大量数据时可能会比较耗费资源,因此在使...
微信小程序:SDK数据库 Aggregate·随机选定记录
在微信小程序云开发的数据库聚合操作中,如果你想要随机选定记录,可以使用 $sample 阶段。 $sample 阶段用于从集合中随机选取指定数量的文档。以下是一个基本的 $sample 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 随机选定记录collection.aggregate() .sample({ size: 5 // 随机选取 5 条记录 }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .sample 方法进行随机选定记录操作。在随机选定记录操作中,size: 5 表示随机选取 5 条记录。你可以根据实际业务需求修改和扩展示例中的选定记录方式。需要注意的是,$sample 在处理大量数...
微信小程序:SDK数据库 Aggregate·指定根节点
在微信小程序云开发的数据库聚合操作中,如果你想要指定根节点,可以使用 $replaceRoot 阶段。 $replaceRoot 阶段用于将文档的某个字段替换成文档的根节点。以下是一个基本的 $replaceRoot 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 指定根节点collection.aggregate() .replaceRoot({ newRoot: '$yourFieldName' }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .replaceRoot 方法进行指定根节点操作。在指定根节点操作中,newRoot: '$yourFieldName' 表示将字段 $yourField...
微信小程序:SDK数据库 Aggregate·传递字段
在微信小程序云开发的数据库聚合操作中,如果你想要传递字段进行操作,可以使用 $project 阶段。 $project 阶段用于重新定义文档的形状,包括选择哪些字段输出、增加新字段等。以下是一个基本的 $project 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 传递字段collection.aggregate() .project({ title: '$title', author: '$author', customField: '$yourFieldName' // 自定义字段,可以是已有字段或者新的字段 }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .project 方法进...
微信小程序:SDK数据库 Aggregate·过滤文档
在微信小程序云开发的数据库聚合操作中,你可以使用 $match 阶段来过滤文档,实现按照特定条件筛选文档的功能。以下是一个基本的 $match 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 过滤文档collection.aggregate() .match({ status: 'published', category: 'news' }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .match 方法进行过滤操作。在过滤操作中,status: 'published' 表示筛选 status 字段值为 'published' 的文档,category: 'news' 表示筛选 category...
微信小程序:SDK数据库 Aggregate·联表查询
在微信小程序云开发中,目前原生的云开发数据库聚合操作(Aggregate)不支持直接进行联表查询,因为聚合操作主要用于单个集合内的数据处理。然而,你可以通过在云函数中编写代码来模拟联表查询的效果。以下是一个简单的示例,演示如何在云函数中实现两个集合的联表查询:1. 创建一个云函数,在云函数中获取两个集合的数据,并通过代码实现联表查询的逻辑。2. 在小程序端调用云函数获取联表查询的结果。示例云函数代码:// 云函数入口文件const cloud = require('wx-server-sdk');cloud.init();const db = cloud.database();// 云函数入口函数exports.main = async (event, context) => { try { const result = await db.collection('collectionA').get(); const dataA = result.data; const dataB = []; for (let i = 0; i < dataA.le...
微信小程序:SDK数据库 Aggregate·限制记录数
在微信小程序云开发中,如果你想限制输出的记录数,可以使用 $limit 阶段进行限制。以下是一个基本的 $limit 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 限制输出的记录数collection.aggregate() .limit(10) // 限制输出的记录数为 10 条 .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .limit 方法进行限制操作。在限制操作中,10 表示限制输出的记录数为 10 条。你可以根据实际业务需求修改和扩展示例中的限制数。更多详细的文档和 API 可以参考[微信小程序云开发官方文档 - 数据库 - 聚合操作](https://developers.weixin.qq.co...
微信小程序:SDK数据库 Aggregate·记录分组
在微信小程序云开发中,聚合操作的 $group 阶段可以用于记录分组。以下是一个基本的 $group 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 记录分组collection.aggregate() .group({ _id: '$category', // 按照字段 category 进行分组 count: $.sum(1), // 计算每个分组的数量 totalAmount: $.sum('$amount') // 计算每个分组的 amount 字段的总和 }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .group 方法进行分组操作。在分组操作中,_id 字段指定了按照...
微信小程序:SDK数据库 Aggregate·从近到远输出
在微信小程序云开发中,如果你想按照日期或其他时间相关的字段,从近到远输出记录,你可以使用 $sort 阶段进行排序。以下是一个基本的 $sort 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 从近到远输出记录collection.aggregate() .sort({ timestampField: -1 // 按照时间戳字段降序排序 }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .sort 方法进行排序操作。在排序操作中,timestampField: -1 表示按照名为 timestampField 的时间戳字段降序排序,即从近到远输出记录。请根据你的实际业务需求修改示例中的字段名和排序方式...
微信小程序:SDK数据库 Aggregate·计算记录数
在微信小程序云开发中,聚合操作的 $group 阶段可以用于计算记录数。以下是一个基本的 $group 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 计算记录数collection.aggregate() .group({ _id: null, count: $.sum(1) }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .group 方法进行分组操作。在分组操作中,_id 设置为 null 表示对整个集合进行分组,而 $.sum(1) 表示计算每个分组的数量,即记录数。这样就可以得到整个集合的记录数。你可以根据实际需求修改和扩展聚合操作的条件和输出内容。更多详细的文档和 API 可以参考...
微信小程序:SDK数据库 Aggregate·划分记录
在微信小程序云开发中,聚合操作的 $bucket 阶段用于将记录划分为不同的区间(bucket),可以根据指定的条件进行分组。以下是一个基本的 $bucket 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 划分记录collection.aggregate() .bucket({ groupBy: '$key', boundaries: [0, 50, 100], default: 'other', output: { count: $.sum(1), total: $.sum('$value') } }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggregate() 创建聚合对象,然后使用 .bu...
微信小程序:SDK数据库 Aggregate·划分输入数据
在微信小程序云开发中,聚合操作中的 $bucket 阶段可以用于将输入数据进行划分。该阶段将输入数据划分为不同的区间(bucket),可以根据指定的条件进行分组。以下是一个基本的 $bucket 阶段的使用示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 划分输入数据collection.aggregate() .bucket({ groupBy: '$key', boundaries: [0, 50, 100], default: 'other', output: { count: $.sum(1), total: $.sum('$value') } }) .end() .then(res => { console.log(res); }) .catch(err => { console.error(err); });在上述示例中,通过 collection.aggrega...
微信小程序:SDK数据库 Aggregate·添加记录
在微信小程序云开发中,聚合操作主要用于对已有的数据进行查询、分组、排序等处理,并不用于添加记录。添加记录通常使用 Collection 对象的 add 方法。以下是一个添加记录的基本示例:const db = wx.cloud.database();const collection = db.collection('collectionName');// 添加记录collection.add({ data: { key1: value1, key2: value2, // ... }, success: res => { console.log(res); }, fail: err => { console.error(err); }});在上述示例中,通过 collection.add 方法可以向集合中添加新的记录。data 字段是需要添加的记录内容,其中的 key1、key2 等字段是你集合中定义的字段名。如果你有特殊需求,例如添加记录的同时进行一些复杂的处理,可以使用云函数来实现。云函数可以在服务器端执行,允许你编写更复杂的逻...