微信小程序云开发-聚合函数连表查询
学习任何一门新的语言都很需要耐心的。
Collection.aggregate():发起聚合操作,定义完聚合流水线阶段之后需调用 end 方法标志结束定义并实际发起聚合操作
连表条件查询
exports.main = async (event, context) => { .....省略了...... // 以下查询结果为: 满足match里面条件的accounts表数据和其有相对应user_id的users表数据的集合 return await db.collection(accounts) .aggregate().match({ // 对主表accounts 添加筛选条件 group_id: event.groupId, account_time: _.gte(lastTime), utype: event.utype }) .lookup({ // 左外连接副表users from:users, localField: user_id, // 指定主表的关联字段 foreignField: openid, // 指定副表的关联字段 as: userInfo // 把副表的查询结果放到userInfo对象里面 }) .end() })
3个表也可以查询
exports.main = async (event, context) => { try { return await db.collection(settlement) .aggregate().match({ settle_group_id: event.groupId }).lookup({ from:users, localField: settle_user_id, foreignField: openid, as: userInfo }) .lookup({ from:groups, localField: settle_group_id, foreignField: group_id, as: groupInfo }) .end() } catch (error) { console.log(error) } }
清空表数据
db.collection(users). where({ _id: _.all }) .remove()
排序、限制查询条数
// 查找最近一次结算账单的时间 await db.collection(settlement) .where({ settle_group_id: event.groupId }) .field({ settle_date: true, settle_user_id: true, }) .orderBy(settle_date, desc) // 根据settle_date倒叙排 .limit(1) // 只查一条数据 .get() .then(res => { if(res.data.length > 0) { const lastTime = res.data[0][settle_date] } })
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序开发者工具详解