1***@qq.com
1***@qq.com
  • 发布:2022-01-27 21:59
  • 更新:2022-02-07 12:08
  • 阅读:196

可以用计算字段进行排序吗

分类:uniCloud
.orderBy('subtract(like_count,nolike_count) desc')

这样写貌似没有达到排序效果

2022-01-27 21:59 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

应先使用field计算,再将field内计算出来的结果排序

  • 1***@qq.com (作者)

    貌似是因为getTemp的关系


    const usercomment = db.collection('usercomment').where("user_id=='" + uid + "'").getTemp()  
    const user = db.collection('uni-id-users').field("_id,nickname,avatar_file").getTemp()
    db.collection('comment', usercomment, user)

    使用getTemp进行联表查询的话排序就乱了

    2022-02-08 19:49

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 没看明白你说的,跟帖子里面说的是一个问题吗?

    2022-02-09 11:23

  • 1***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 这是我希望的的排序方法


    const usercomment = db.collection('usercomment').where("user_id=='" + uid + "'").getTemp()  
    const user = db.collection('uni-id-users').field("_id,nickname,avatar_file").getTemp()
    db.collection('comment', usercomment, user).where("isshow==true&&deletecom==false&&" + "food_id=='" + this.foodid + "'").field("_id,like_count,subtract(like_count,nolike_count) as lastcount,food_id,content,create_date,isshow,user_id._id,user_id.nickname,user_id.avatar_file,score,food_id,showmore")
    .orderBy('lastcount desc').skip(pageNo).limit(pageSize).get()

    先通过getTemp生成副表,再通过联表查询,field处理排序字段(lastcount),最后用lastcunt字段orderBy排序。

    但结果排序是乱的。如果不通过getTemp生成副表,直接三个表连起来就可以。

    2022-02-10 11:23

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 贴一个乱的结果出来我看下

    2022-02-10 17:37

  • 1***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ:


    {  
    "_id": {
    "_value": "61e0ca6c5ddb6100014aeaeb",
    "usercomment": []
    },
    "like_count": 1,
    "lastcount": 0
    }, {
    "_id": {
    "_value": "61e0cdb584e56f0001d29bc5",
    "usercomment": []
    },
    "like_count": 1,
    "lastcount": 1
    }, {
    "_id": {
    "_value": "61e13b647bd8d20001ca20f1",
    "usercomment": []
    },
    "like_count": 0,
    "lastcount": -1
    }

    2022-02-14 23:19

该问题目前已经被锁定, 无法添加新回复