.skip(已取数量).limit(10000) 这样每次取 10000 条数据的方法,好像是丢弃.skip(x)里的数据然后返回 1 万条,这样的话到后来每次丢弃半个表的数据再返回 1 万条数据,速度简直停止了。。
初用 MongoDB,求比较好的办法能够实现 [直接返回从 x 开始的 1 万条数据] 这个需求
初用 MongoDB,求比较好的办法能够实现 [直接返回从 x 开始的 1 万条数据] 这个需求
|
1
按照 id 增序或降序,每次记住最后一条记录的 id,下一个循环的时候,where id > lastId 来过滤掉已经取出的数据。这跟是不是 mongo 没有关系。
|
|
2
数据库大的时候绝对不要用 skip,因为它也是一条一条去数。你每次取一万条,记住最后一条的_id,由于_id 是单调递增的,所以下一次大于_id 再取一万条即可。
|
|
pudgedoorJul 1, 2018 via Android
3
聚合然后$sample 可以吗?
|
|
cockcryJul 1, 2018
4
这么大数据应该做分片的
|
|
fmumuJul 2, 2018 via Android
5
skip 不行,mongodb 权威指南一书中有提到解决方案,用 id 排序,然后过滤大于上一批最大 id 的数据,再 limit
|
|
yimityJul 2, 2018 via Android
6
好像可以使用游标来解决,权威指南上也有说。
|
|
tonghuashuaiJul 2, 2018
7
典型的大数据分页场景,skip(offset) limit 会废掉,应该采用游标的方式
|