收藏
回答

小程序云开发聚合如何将要查询的记录进行 如同 collection.field({})进行指定返回?

小程序云开发聚合如何将要查询的记录进行 如同 collection.field({})进行指定返回?

db.collection('todo').aggregate()

.lookup({})

获取到的是 记录的所有数据,以及联表记录的所有数据

如何操作才能 主表只获取指定返回结果中记录需返回的字段

回答关注问题邀请回答
收藏

3 个回答

  • LeeaYoung
    LeeaYoung
    2021-07-22
    // 联表
        let query = await db.collection(collectionName)
            .aggregate()
            .lookup(joinParams);
    
    
        /*
        query = await query.replaceRoot({
        newRoot: $.mergeObjects([ $.arrayElemAt(['$USER_DETAIL', 0]), '$$ROOT' ])
        })*/
    
    
        // 查询条件
        if (util.isDefined(where))
            query = await query.match(fmtWhere(where));
    
    
        // 取出特定字段
        if (util.isDefined(fields) && fields != '*')
            query = await query.project(fmtFields(fields));
    
    
        // 排序   
        if (util.isDefined(orderBy)) {
            query = await query.sort(fmtJoinSort(orderBy));
        }
    
    
        // 分页
        query = await query.skip((page - 1) * size + offset).limit(size);
    
    2021-07-22
    有用 1
    回复
  • Mr.Zhao
    Mr.Zhao
    2021-07-22

    .project

    2021-07-22
    有用 1
    回复 4
    • 刨顶怪
      刨顶怪
      2021-07-22
      联表查询 中用 .project也可以吗? 怎么我用了 返回结果是个空数组
      2021-07-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-22回复刨顶怪
      用了就能用对?
      2021-07-22
      回复
    • 嚯洛嚯洛
      嚯洛嚯洛
      2021-08-31回复Mr.Zhao
      这个方法的文档写得也不是那么详细,老板有更详细的用法文档地址推荐吗?
      2021-08-31
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-08-31回复嚯洛嚯洛
      没有,多研究多测试
      2021-08-31
      回复
  • 蟑螂
    蟑螂
    09-22
    db.collection('a')
    .aggregate()
    .lookup({
      from: "b",
      localField: "a.openid",//a表与b表匹配的字段
      foreignField: "b.openid", //b表与a表匹配的字段
      as: "too"
    })
    .match({xx: xx})
    .project({
      a.id:1,
      'too.xx':1,
      'too.yy':1
    })
    .end()
    
    
    


    09-22
    有用 1
    回复
登录 后发表内容