输入关键字或相关内容进行搜索
搜索:
发布问题
尝试了很多个写法,都不能达到我的需求。
去重了,每一次查询出来的数据都不一样。( group)
没有找到相关结果
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
distinct试了没? 配合field 然后再orderBy
7***@qq.com (作者)
用了不是我想要的结果,我现在是全部查询下来,再前端去重。很麻烦,请问有没有其他办法?
2023-11-09 14:20
db.collection("download").field('worksPictureID').distinct() .orderBy('time desc') .limit(40) .get() .then((res) => { console.log(res.result.data) })
2023-11-09 14:21
.field('worksPictureID').distinct() 是可以去重,但是排序后的结果,跟实际上的结果区别很大。。。
2023-11-09 14:34
套马杆的套子
回复 7***@qq.com: 区别很大是什么?
2023-11-09 14:37
回复 套马杆的套子: time:1;content:a; time:2;content:b; time:3;content:b; time:4;content:c; time:5;content:a; time:6;content:b; 我想要的是对 content去重。如果根据time排序。那出来的结果应该得是 b,a,c。 但是实际上用(group)每次出来的结果每一次相同。 用(.field('worksPictureID').distinct() )出来的结果跟b,a,c。没什么关系。。。。
2023-11-09 14:47
所以,我不知道是不支持,还是它有bug,还是我用的方法不对
2023-11-09 14:48
DCloud_uniCloud_WYQ
回复 7***@qq.com: 例子补充完整一些,你的数据是什么样的?想要什么样的输出?
2023-11-09 18:03
回复 DCloud_uniCloud_WYQ: 就是我有一个表,上面记录着下载数据,包括下载东西的ID,时间戳。现在的需求是,对这个表进行一个时间戳的倒序排列,然后去重。也就是说,用户下载的最新数据会显示的最前面。请问有什么办法吗?
2023-11-10 15:20
回复 DCloud_uniCloud_WYQ: 有没有办法直接获取这样的数据呢?我目前都是拿完排序后的结果,前端去重。这样的问题会很慢,而且重复的数据很多,有时候拿60个才排重出1.2个。
2023-11-10 16:22
回复 DCloud_uniCloud_WYQ: 而且 就算同一个条件,在不同时间访问,返回的数据也不一样。 db.collection("download").orderBy('time desc').field('worksPictureID').distinct() .skip(0).limit(20) .get()
2023-11-10 17:42
回复 DCloud_uniCloud_WYQ: 哥,有办法达到需求没
2023-11-10 18:13
回复 7***@qq.com: 可以看看文档里面的first 如果是jql语法就是把group拆成groupBy和groupField
2023-11-15 11:35
c***@qq.com
问问gpt
我用文心,它太菜了。。。。。
文心太菜了,gpt用起来好麻烦
2023-11-09 15:24
要回复问题请先登录或注册
7***@qq.com (作者)
用了不是我想要的结果,我现在是全部查询下来,再前端去重。很麻烦,请问有没有其他办法?
2023-11-09 14:20
7***@qq.com (作者)
db.collection("download").field('worksPictureID').distinct()
.orderBy('time desc')
.limit(40)
.get()
.then((res) => {
console.log(res.result.data)
})
2023-11-09 14:21
7***@qq.com (作者)
.field('worksPictureID').distinct() 是可以去重,但是排序后的结果,跟实际上的结果区别很大。。。
2023-11-09 14:34
套马杆的套子
回复 7***@qq.com: 区别很大是什么?
2023-11-09 14:37
7***@qq.com (作者)
回复 套马杆的套子: time:1;content:a;
time:2;content:b;
time:3;content:b;
time:4;content:c;
time:5;content:a;
time:6;content:b;
我想要的是对 content去重。如果根据time排序。那出来的结果应该得是
b,a,c。
但是实际上用(group)每次出来的结果每一次相同。
用(.field('worksPictureID').distinct() )出来的结果跟b,a,c。没什么关系。。。。
2023-11-09 14:47
7***@qq.com (作者)
所以,我不知道是不支持,还是它有bug,还是我用的方法不对
2023-11-09 14:48
DCloud_uniCloud_WYQ
回复 7***@qq.com: 例子补充完整一些,你的数据是什么样的?想要什么样的输出?
2023-11-09 18:03
7***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 就是我有一个表,上面记录着下载数据,包括下载东西的ID,时间戳。现在的需求是,对这个表进行一个时间戳的倒序排列,然后去重。也就是说,用户下载的最新数据会显示的最前面。请问有什么办法吗?
2023-11-10 15:20
7***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 有没有办法直接获取这样的数据呢?我目前都是拿完排序后的结果,前端去重。这样的问题会很慢,而且重复的数据很多,有时候拿60个才排重出1.2个。
2023-11-10 16:22
7***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 而且 就算同一个条件,在不同时间访问,返回的数据也不一样。
db.collection("download").orderBy('time desc').field('worksPictureID').distinct()
.skip(0).limit(20)
.get()
2023-11-10 17:42
7***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 哥,有办法达到需求没
2023-11-10 18:13
DCloud_uniCloud_WYQ
回复 7***@qq.com: 可以看看文档里面的first 如果是jql语法就是把group拆成groupBy和groupField
2023-11-15 11:35