小程序聚合查询,实现条件分页查询

需求

有两张表,需要做连接查询出结果,并且该查询是有条件的查询,还需要分页。

表结构

表结构大概是下图这个样子。外键是openid

实现

1、 如果是mysql的话,sql语句如下

select article.*,userList.nickName,userList.avatarUrl from article as article LEFT JOIN `user` as userList ON article.openid = userList.openid WHERE (article.category = 1 AND article.`share` = 2) OR (article.category = 1 AND article.`share` = 1 AND article.openid = '') LIMIT 0,20

2 、如果是微信小程序的话

db.collection('article').aggregate().match(
db.command.or([{
        category: 1,
        share: 2
      }, {
        category: 1,
        share: 1,
        openid: '你的openid'
      }])
).skip(0).limit(20).lookup({
  from: 'user',
  localField: 'openid',
  foreignField: 'openid',
  as: 'userList'
}).replaceRoot({
  newRoot: 美元符号.mergeObjects([ 美元符号.arrayElemAt(['美元符号userList', 0]), '美元符号美元符号ROOT' ])
}).project({
    userList: 0
}).end()

结果

小程序查询结果如下图

说明:代码区域内编辑器不能使用$,使用了美元符号代替