DaZiYuan
DaZiYuan
  • 发布:2021-04-22 00:01
  • 更新:2022-05-12 14:48
  • 阅读:2187

lookup方法内只允许使用子查询(let+pipeline)方式

分类:uni-app

为什么我按官方文档写的,查询报错https://uniapp.dcloud.io/uniCloud/cf-database?id=lookup

数据也是官方文档拷贝的

const db = uniCloud.database()
let res = await db.collection('orders').aggregate()
.lookup({
from: 'books',
localField: 'book',
foreignField: 'title',
as: 'bookList',
})
.end()

2021-04-22 00:01 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
海棠街大厉害

海棠街大厉害

const dbCmd = db.command  
    const $ = dbCmd.aggregate  
    db.collection('epidemics')  
        .aggregate().lookup({  
            from: '表名',  
            let: {  
                某某_id: '$某某_id'  
            },  
            pipeline: $.pipeline()  
                .match(dbCmd.expr(  
                    $.eq(['$_id', '$$某某_id'])  
                ))  
                .done(),  
            as: '某某'  
        }).lookup({  
            from: '表名1',  
            let: {  
                某某1_id: '$某某1_id'  
            },  
            pipeline: $.pipeline()  
                .match(dbCmd.expr(  
                    $.eq(['$_id', '$$某某1_id'])  
                ))  
                .done(),  
            as: '某某1'  
        }).end().then((res) => {  
            console.log(res.result.data)  

        }).catch(error => console.log(error))
  • hayes123

    好兄弟真厉害,感谢感谢,你这个模板对我帮助巨大!

    2023-04-11 19:24

DaZiYuan

DaZiYuan (作者) - 巨应工作室首席打字员

报错信息

chunk-vendors.js:2261 Uncaught (in promise) Error: lookup方法内只允许使用子查询(let+pipeline)方式

  • DCloud_uniCloud_WYQ

    目前clientDB不支持这种写法,会有权限上的问题

    2021-04-22 10:38

  • DCloud_uniCloud_WYQ

    clientDB推荐使用JQL的写法进行联表查询,不推荐直接使用lookup方法

    2021-04-22 10:40

  • 黑肥先生

    回复 DCloud_uniCloud_WYQ: 我现在需要联表查询,并且按照距离排序,是不是不能在clientDB里写?

    2021-06-28 20:20

  • DCloud_uniCloud_WYQ

    回复 黑肥先生: 也是可以的就是写法麻烦点,需要你在clientDB使用原始mongoDB写法

    2021-06-29 11:05

  • 黑肥先生

    回复 DCloud_uniCloud_WYQ: 谢谢回复,写完了,用了let+pipeline方式

    2021-06-30 20:41

  • tkhlo1

    回复 黑肥先生: 你好!请教一下,你是怎么在clientDB中用let+pipeline方式?谢谢!

    2022-08-24 16:39

  • tkhlo1

    回复 DCloud_uniCloud_WYQ: 你好!请问:要怎么在clientDB使用原始mongoDB写法?谢谢!

    2022-08-24 16:43

要和守约赴约

要和守约赴约

你好像少了一个command,具体错误不清楚,但是我联立多张表也是可以的

const db = uniCloud.database()
const dbCmd = db.command
await db.collection('表单1')
.aggregate()
.match({
"_id": dbCmd.in(ides)
})
.lookup({
from: '表单2',
localField: '_id',
foreignField: '外键',
as: '重命名'
})
.lookup({
from: '表单3',
localField: '_id',
foreignField: '外键',
as: '重命名'
})
.end();

要回复问题请先登录注册